美文网首页U3D技术采集
OOP面向对象(封装,参数传递,继承)

OOP面向对象(封装,参数传递,继承)

作者: Unity开发 | 来源:发表于2016-12-06 20:29 被阅读159次

封装

oop三大特征之封装
 *
 *
 *为什么要封装?
 * 属性存在的目的其实就是为了保护类的内部结构不被破坏,达到封装性
 * 属性的语法格式为:
 * 访问修饰符public(必须滴)+对应字段的数据类型+字段名称(首字母必须大写)
 * {
 * 
 * }
 * 属性本身就是一种特殊的方法,他没有返回值是因为属性内部提供了可以访问该属性的访问器
 * 
 * ref参数:将值类型引用改变为地址引用
 * 
 * 值类型作为参数传递是,传递的不是本身,而是副本,此时要想修改本身的值,要将值类型改为引用类型
 * 
 * string虽然本身是引用类型,但是作为参数哦传递的时候,默认是值类型,而不是引用传递,这就需要我们
 * 如果想改变原来的字符串,这个时候要将值类型改为引用类型,加上ref关键字
 * 如果不想改变,就用原来的字符串,直接传递字符串
 * 
 * object本身就是引用类型,他和字符串不一样,默认就是引用类型,也就是传递的是地址
 * 数组作为参数进行传递,也是引用传递
 * 
 * out参数:输出到
 * 其实就是保存一个数值在其中
 * 

冒泡排序

public static void MAp(int [] Arr){
            int sum=0;
            for (int j = 0; j < 7;j++) {
                for (int i = 0; i < 7- j -1; i++) {
                    
                
                    if (Arr [i]> Arr [i + 1]) {
                        sum = Arr [i ];
                        Arr [i] = Arr [i + 1];
                        Arr [i + 1] = sum;
                    }
                }
                Console.WriteLine ();
            }
            foreach (var item in Arr) {
                Console.WriteLine (item);
            }
        }

//将冒泡排序封装成方法,在Main方法中遍历输出结果
            //编写一个方法,功能是打印数组里的元素
            int[] Arr = { 1, 2, 5, 8, 3, 5,6 };
            MainClass.MAp(Arr);

英雄类

class Yinxon{
            
            private string name="亚瑟";
            private string dw="坦克";
            private string tc="先手";
            private int sld;
            private string scnl="89";
            private string gjsh="320";
            private string jnxg="100%";
            private string ssnd="容易上手";


            public string Name
            {
                get{ 
                    return name;
                }    
            }
            public string Dw
            {
                get{ 
                    return dw;
                }    
            }
            public string Tc
            {
                get{ 
                    return tc;
                }    
            }


            public int Sld
            {
                set{ 
                    sld=value;
                    Console.WriteLine ("熟练度{0}",sld);
                }
                get{ 
                    return sld;

                }    
            
            }
            public string Scnl
            {

                get{ 
                    return scnl;
                }    
            }
            public string Gjsh
            {    
                get{ 
                    return gjsh;
                }    
            }
            public string Jnxg
            {    
                get{ 
                    return jnxg;
                }    
            }
            public string Ssnd
            {    
                get{ 
                    return ssnd;
                }    
            }

Yinxon y=new Yinxon();
            y.Sld=100; 
            Console.WriteLine ("英雄名:{0}",y.Name);
            Console.WriteLine ("定位:{0}",y.Dw);
            Console.WriteLine ("特长:{0}",y.Tc);
            Console.WriteLine ("生存能力:{0}",y.Scnl);
            Console.WriteLine ("攻击伤害:{0}",y.Gjsh);
            Console.WriteLine ("技能效果:{0}",y.Jnxg);
            Console.WriteLine ("上手难度:{0}",y.Ssnd);

参数传递

//验证值类型
        public static void Swap(ref int a,ref int c)
        {
            int temp=0;
            temp=a;
            a = c;
            c = temp;

        }

        //验证字符串
        public static void Append(string str) 
        {
            str="你好"+str;
            Console.WriteLine (str);
        }
        //验证引用类型
        public static void Update(Student1 s6)

        {
            s6.name="张三";

        }


        //验证数组
        public static void UpdateArr(int [] intArr)
        {
            intArr[0]=100;
        }

// 演示1 整形传递
            int a=10;
            int c=9;
            MainClass.Swap(ref a,ref c);
            Console.WriteLine ("{0}   {1}",a,c); 

            //演示2 字符串传递
            string s1="中国";
            MainClass.Append(s1);
            Console.WriteLine (s1);

            //演示三:对象传递

            Student1 s6 = new Student1 ();
            s6.name="李四";
            MainClass.Update (s6);
            Console.WriteLine (s6.name);

            //演示4 数组传递
            int [] intArr={1,2};
            MainClass.UpdateArr (intArr);
            foreach (var item in intArr) {
                Console.WriteLine (item);
            }

继承

  *继承:
 *继承使用条件:到你在设计类的时候,发现有字段相同
 *                具有相同特征不同行为的可以抽取出来,单独称为一个类,这个类供派生类使用
 *                简称;基类
 * 
 * 
 * 在现实生活中继承的关系横多
 * 1.儿子继承父亲
 * 2.黄焖鸡米饭
 * .......
 * 
 * 在程序中使用关键符号:表示继承
 * 格式:(:+类)
 * 这个类是指继承的类
 * 
 * 继承类的特点
 * 1.子类可以继承父类中的公有字段
 * 2.子类可以继承父类的公开属性
 * 3.子类可以继承父类中的公开方法
 * 4.父类不能拥有子类的字段、方法、属性、索引器
 * 5.在C#中不支持多重继承,也就是一个类只能继承一个类,如果你想支持多重继承,那么请使用接口Iterface
 * 6.继承关系中的构造函数(重点)
 * 1.在继承关系中首先会调用父类的构造函数,然后在调用子类的构造函数
 * 2.在继承关系中子类初始化对象的时候县调用父类的构造函数,然后再看子类构造函数有没有显示
 *     通知编译器指定调用父类的哪个构造函数,如果没有,那么默认去调用父类中的无惨构造函数
 *     此时如果父类重写了带有参数的构造函数,程序编译不会通过,那么解决办法就是给父类添加构造函数
 *     或者在子类构造函数中声明指定调用父类的哪个构造函数

//定义一个父类Hero

public class Hero
    {
        //字段
        public string hero_Name;
        public string hero_Ding;
        public string hero_Te;
        public string hero_Ext;
        public string hero_Live;
        public string hero_Hurt;
        public string hero_Effect;
        //public string hero_Operation;
        //私有字段
        private string _hero_Operation;

        public Hero()
        {
            Console.WriteLine ("构造函数1");
        }
        public Hero(string hero_Name,int hero_Ding)
        {
            this.hero_Name=hero_Name;
            Console.WriteLine ();
            Console.WriteLine ("构造函数2");
        }

        //属性

        public string Hero_Operation
        {
            set{ 
                Console.WriteLine (value);
                _hero_Operation = value;
            }
            get { 
                return _hero_Operation;
            }

        }
        //行为
        public void Baoji()
        {
            Console.WriteLine ("暴击效果");
        }
        //行为1 
        private void Baoji2()
        {
            Console.WriteLine ("暴击效果2");
        }
    }
    class Hero2
    {
        
    }
    class Hero_MonKey:Hero
    {
//        public string name; 
//        public int age; 


        public Hero_MonKey(string name,int age):base(name,age)
        {
            Console.WriteLine (name);
        }
        public static void Main()
        {
//            Hero_MonKey hm = new Hero_MonKey ();
//            hm.hero_Name="111";
//            hm.Hero_Operation = "222";
//            hm.Baoji ();
            Hero_MonKey h = new Hero_MonKey ("XXX",19); 
            Console.WriteLine (h);
        
        }

相关文章

  • OOP面向对象(封装,参数传递,继承)

    封装 oop三大特征之封装***为什么要封装?*属性存在的目的其实就是为了保护类的内部结构不被破坏,达到封装性*属...

  • OC中自定义初始化 与 方法分类

    面向对象的三大特征, 封装, 继承与多态!面向对象编程OOP(Object Oriented Programmin...

  • C#之面向对象基础篇

    面向对象编程:简称OOP 面试题:什么是面向对象? 答:封装,继承,多态即为面向对象 面相对象的方法: 面向对象的...

  • 面向对象编程

    1. 面向过程、面向对象 OOP、函数式编程 2. 面向对象三大基本特征:封装、继承、多态 封装: 隐藏内部的变量...

  • 继承

    继承 oop(面向对象的三大特性):继承、封装、多态 单继承 class p:... p = 2...cl...

  • JS面向对象整理篇一——基础概念衍生

    JS面向对象 oop 继承:实例可以继承A对象中的方法和属性,减少代码冗余 封装:对象把实现过程封装在方法中,调用...

  • Python札记34_继承(待更新)

    面向对象编程OOP有以下三个特征,本篇札记中主要讨论继承的知识点: 继承 多态 封装 继承 概念 继承是面向对象设...

  • SpringAOP以及动态代理

    AOP,即面向切面编程,算是OOP(面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次...

  • spring基础(AOP)

    什么是AOP(面向切面) AOP可以说是OOP(面向对象)的补充和完善,OOP中有封装、继承、多态来建立一种对象层...

  • 对象_原型_木桶布局

    1. OOP 指什么?有哪些特性 OOP指的是面向对象编程 三大特性:封装、继承、多态1.封装封装指的是将方法和属...

网友评论

    本文标题:OOP面向对象(封装,参数传递,继承)

    本文链接:https://www.haomeiwen.com/subject/aoirmttx.html