zoukankan      html  css  js  c++  java
  • 设计模式学习笔记二:面向对象基础二

    属性和修饰符
        属性是一个方法或一对方法,但在调用他的代码来看,他就是一个字段,即属性适合于以字段的方式使用方法调用的场合。
        字段是存储类要满足其设计所需要的数据,字段是与类相关的变量。
            
    public class Cat
            
    {
                
    //声明一内部字段,注意是private,默认叫的次数是3

                private int shoutnum = 3;
                
    //
    ShoutNum属性,注意是public,当中有两个方法
                
    //
    get表示外界调用是可以得到shoutnum的值
                
    //set表示外界可以给内部的shoutnum赋值

                public int ShoutNum
                
    {
                    
    get return shoutnum; }

                    
    set { shoutnum = value; }
                }

            }
        上面代码中的private 和public都是修饰符。public 表示所修饰的类成员可以允许其他任何类来访问,俗名公有的。private 表示只允许同一个类中的成员访问,其他类包括他的子类无法访问,俗名私有的。如果类中的成员没有加修饰符,则默认为private。通常字段都是private,属性都是public。通常情况下,属性名称首字母大写,而字段则一般是首字母小写或者前面加‘_’。
        属性有两个方法get和set。get访问器返回与声明的属性相同的数据类型,表示的意思是调用是可以得到内部字段的值或者引用;set访问器没有设置参数,用关键词value表示,他的作用是调用属性是可以给内部的字段或引用赋值。
    封装
        封装是面向对象的三大特性之一。每个对象都包含他能进行操作所需要的所有信息,这个特性成为封装,因为对象不必依赖其他对象来完成自己的操作。
        封装的好处:良好的封装能减少耦合;类内部的实现可以自由地修改;类具有清晰的对外接口。
    继承
        
    面向对象的第二大特征就是继承。对象的继承代表了一种‘is-a’的关系,如果两个对象A和B,可以描述为‘B是A’,则表明B可以继承A。猫是哺乳动物,就说明了猫与哺乳动物之间的继承和被继承的关系。继承者可以理解为被继承者的特殊化,因为他除了具备被继承者的特性外,还具备自己独有的个性。继承定义了类如何相互关联,共享特性。继承的工作方式是,定义父类和子类,或叫做基类和派生类,其中子类继承父类的所有的特性。子类不但继承了父类的所有特性,还可以定义新的特性。
        如果子类继承于父类,第一,子类拥有父类非private的属性和功能;第二,子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;第三,子类可以以自己的方式实现父类的功能(方法重写)。
        protected表示继承时子类可以对基类有完全访问权。也就是说protected修饰的类成员,对子类公开,但不对其他类公开。
    子类继承了父类,则基类拥有了父类的除private外的属性和功能。
        动物基类:
        
    public class Animal
            
    {
                
    protected string name = "";
                
    public Animal(string name)
                
    {
                    
    this.name = name;
                }

                
    public Animal()
                
    {
                    
    this.name = "无名";
                }

                
    protected int shoutNum = 3;

                
    public int ShoutNum
                
    {
                    
    get return shoutNum; }
                    
    set { shoutNum = value; }
                }

            }
    猫子类:
    public class Cat : Animal
            
    {
                
    public Cat()
                    : 
    base()
                
    { }

                
    public Cat(string name)
                    : 
    base(name)
                
    { }
                
    public string Shout()
                
    {
                    
    string result = "";
                    
    for (int i = 0; i < shoutNum; i++)
                    
    {
                        result 
    = result + "嘧,";
                    }

                    
    return "我的名字叫" + name + " " + result; 

                }

            }
    狗子类:
    public class Dog : Animal
            
    {
                
    public Dog()
                    : 
    base()
                
    { }

                
    public Dog(string name)
                    : 
    base(name)
                
    { }
                
    public string Shout()
                
    {
                    
    string result = "";
                    
    for (int i = 0; i < shoutNum; i++)
                    
    {
                        result 
    = result + "汪,";
                    }

                    
    return "我的名字叫" + name + " " + result; 

                }

            }

        子类从他的父类中继承的成员有方法、域、属性、事件、索引指示器,但对于构造方法,他不能被继承,只能被调用。对于调用父类的成员,可以用base关键词。
        
    继承的优点是:继承是所有子类公共部分都放在了父类,使得代码得到共享,这就避免了重复,另外,继承可使得修改和扩展继承而来的实现都比较容易。
        继承的缺点是:当父类变,则子类不得不变。继承会破坏包装,父类实现细节暴露给了子类。
  • 相关阅读:
    [转]ARM QT实现多点触摸
    Accessors are only available when targeting ECMAScript 5 and higher 错误提示
    设置全局变量
    ERROR Error: Cannot find module ‘vueloaderv16/package.json‘
    JVM系列三:JVM参数设置、分析
    HDU 1407 测试你是否和LTC水平一样高
    HDU 1276 士兵队列训练问题
    python类的学习笔记1
    manjaro更新到了20版本fcitx5出问题的解决方法
    图片网站
  • 原文地址:https://www.cnblogs.com/peida/p/1211085.html
Copyright © 2011-2022 走看看