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

封装


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);
        
        }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,898评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,401评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,058评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,539评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,382评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,319评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,706评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,370评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,664评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,715评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,476评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,326评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,730评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,003评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,275评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,683评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,877评论 2 335

推荐阅读更多精彩内容

  • oop:面向对象,全称叫Objectorientedprogramming*面向对象的三大特点:1.封装,*2.继...
    Unity开发阅读 433评论 0 0
  • 虚拟内存总体划分为五大区域:栈区(堆栈),堆区(托管堆),常量,静态(静态初始化,静态未初始化),代码区 * 栈...
    Unity学习的路上阅读 998评论 0 0
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,703评论 2 17
  • 一、JavaScript基础知识回顾 1.1 JavaScript 1.1.1 javascript是什么? Ja...
    福尔摩鸡阅读 1,206评论 0 7
  • 嘿,哥们来,挥起拳头打我,记住迟疑是上帝判罚你的索命的审判 死吧,垃圾再来,打烂你再赐予你一个太阳幸运的话,还能给...
    田裡和樹阅读 174评论 0 1