• 面向对象(基础oop)之进入继承


              大家好,我叫李京阳,,很高兴认识大家,之所以我想开一个自己的博客,就是来把自己所了解的知识点通过自己的话写一下,希望被博客园的朋友们点评和一起讨论一下,也希望从博客园中多认识一些软件开发人员!现在我开始讲一下面向对象的一点知识,请你们多多点评和讨论!!


               1. 继承的目的虽然是让子类去拥有父类的成员,但是继承一定不要乱继承
                 不要仅仅是为了去得到某1个类的成员而去继承.
                
                 满足继承的关系: 当满足is a 的关系的时候,就可以继承.
                 当子类是1个父类的时候 那么就可以继承.
                 Student Person

      class Student : Person
        {
         }

                 麻雀    鸟
                 汽车    交通工具
                 电风扇  电器
               
              2. 只要有1个成员 不是所有的子类 都拥有的, 那么这个成员就不应该定义父类中.

              3. this关键字代表当前对象, 通过this关键字可以访问当前对象的成员
                 当前对象的成员:  自己本身的员+从父类继承过来的所有的成员.
               

     1     class Student : Person
     2     {
     3         public string StuNo { get; set; }
     4       
     5 
     6         public void Test()
     7         { 
     8             this.Name = "jack";
     9         }
    10     }


                 this关键字可以访问 本类的所有成员和父类的非私有成员.  父类的私有成员确实存在,但是就是访问不到.
                 this关键字仍然代表的是对象,通过它可以点出对象中的 除了父类的私有成员 以外的所有成员.
                 this关键字只能用在实例方法中.    

                 base关键字.显示的访问父类的非私有成员 。 可以访问子类对象中的 父类的 非私有成员.
                 特别强调的是: base不代表父类对象 因为压根就没有父类对象. 通过它可以访问父类的非私有成员.
                
                 通过this关键字访问当前对象的成员的时候: 先找子类本身有没有这个成员,如果没有再找是否有从父类继承过来的.
                 base关键字 直接就找父类中的成员.

     1     class Student : Person
     2     {
     3         public string StuNo { get; set; }
     4 
     5 
     6         public Student(string name, int age, bool gender, string stuNo) 
     7             :base(name,age,gender)
     8         { 
     9             this.StuNo = stuNo;
    10         }
    11      }


                 我们发现,base可以点出来的成员 通过this都可以点出来访问.
                 建议: 如果我们访问的确实是从父类继承过来的成员 那么建议用base关键字来访问. a.方便代码的阅读.b.提高效率
                       只有在访问的成员确实是子类独有的,那么我们才用this关键字.

               
              
              4. 继承的特点
                 a. 单根性:  1个类只能有1个父类. 1个人只能有1个亲爹, 但是可以有多个干爹.
                            但是1个类可以实现多个接口.
                           
                 b. object类是所有类的祖宗类.C#中的类都直接的或者间接的从Object类继承.
                    如果我们写1个类 不为这个类指定父类 那么这个类默认就从object类继承.
                    所以我们才可以在这个类中看到object类的成员.
                   
                 c. 传递性:
                    A类从B类继承, B类从C类继承 那么A类就拥有了B和C的所有成员.
                   
             
              5.  protected修饰的成员只能直接在本类和本类的子类中访问.            

    1         protected double Height { get; set; } 
    2 
    3 
    4         public void SayHi()
    5         { 
    6             Console.WriteLine("身高:" +Height);
    7         }

                  在子类中只能直接访问当前子类对象从父类继承过来的ptotected
                  但是不能通过父类对象点出protected来访问.
                  通过子类对象 在子类的内部 是可以点出protected的.        
                  在父类的内部是无论是直接访问还是创建父类对象都是可以访问protected

  • 相关阅读:
    kali长时间未使用导致数字签名过期无法更新源解决办法
    4.爬虫去重策略
    3.编码问题
    kalinux 五笔安装
    ★★★kalinux 常用命令
    安装vm tools时出现如下问题 The path "/usr/bin/gcc" is not valid path to the
    kalinux实现自适用全屏、与物理主机共享文件方法
    wifi pj WiFiPhisher 安装使用
    条款20:在传递对象的时候尽量用reference-to-constent来代替,pass-by-value
    条款19:定义class就相当于定义一个个的内置类型
  • 原文地址:https://www.cnblogs.com/lijingyang/p/3772903.html
Copyright © 2020-2023  润新知