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


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

  class Student : Person
{
}

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

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

     class Student : Person
{
public string StuNo { get; set; } public void Test()
{
this.Name = "jack";
}
}

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

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

     class Student : Person
{
public string StuNo { get; set; } public Student(string name, int age, bool gender, string stuNo)
:base(name,age,gender)
{
this.StuNo = stuNo;
}
}

我们发现,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修饰的成员只能直接在本类和本类的子类中访问.

         protected double Height { get; set; } 

         public void SayHi()
{
Console.WriteLine("身高:" +Height);
}

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

面向对象(基础oop)之进入继承的更多相关文章

  1. JS--我发现,原来你是这样的JS:面向对象编程OOP[3]--(JS继承)

    一.面向对象编程(继承) 这篇博客是面向对象编程的第三篇,JS继承.继承顾名思义,就是获取父辈的各种"财产"(属性和方法). 怎么实现继承? 我们的JavaScript比较特别了, ...

  2. 面向对象(基础oop)之继承总结

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

  3. 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...

  4. python基础学习Day17 面向对象的三大特性之继承、类与对象名称空间小试

    一.课前回顾 类:具有相同属性和方法的一类事物 实例化:类名() 过程: 开辟了一块内存空间 执行init方法 封装属性 自动的把self返回给实例化对象的地方 对象:实例 一个实实在在存在的实体 组 ...

  5. 从零开始学Python第六周:面向对象基础(需修改)

    标签(空格分隔): 面向对象 一,面向对象基础 (1)面向对象概述 面向过程:根据业务逻辑从上到下写代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类 ...

  6. 8.python笔记之面向对象基础

    title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...

  7. 【重走Android之路】【Java面向对象基础(三)】面向对象思想

    [重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想   1 面向对象的WWH   1.1 What--什么是面向对象         首先,要理解“对象”.在Thinkin ...

  8. python 自动化之路 day 面向对象基础

    1.面向對象基础概述 面向过程: 根据业务逻辑从上到下垒代码(如果程序修改,对于依赖的过程都需要进行修改.) 函数式: 将某功能代码封装到函数中,如后便无需重复编写,仅需要调用函数即可 面向对象: 世 ...

  9. 理解面向过程(OPP)、面向对象(OOP)、面向切面(AOP)

    概念 面向过程编程OPP:Procedure Oriented Programming,是一种以事物为中心的编程思想.主要关注“怎么做”,即完成任务的具体细节. 面向对象编程OOP:Object Or ...

  10. python之路 面向对象基础 XML

    一.面向对象基础 1.类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义 ...

随机推荐

  1. python网络编程--操作系统介绍

    1.操作系统介绍 操作系统位于计算机硬件与应用软件之间,本质也是一个软件.操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两 ...

  2. “全栈2019”Java异常第三章:try代码块作用域详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

  3. Prufer codes与Generalized Cayley's Formula学习笔记

    \(Prufer\)序列 在一棵\(n\)个点带标号无根树里,我们定义这棵树的\(Prufer\)序列为执行以下操作后得到的序列 1.若当前树中只剩下两个节点,退出,否则执行\(2\) 2.令\(u\ ...

  4. BZOJ 4719--天天爱跑步(LCA&差分)

    4719: [Noip2016]天天爱跑步 Time Limit: 40 Sec  Memory Limit: 512 MBSubmit: 1464  Solved: 490[Submit][Stat ...

  5. 深入理解Scala的隐式转换

    摘要: 通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码.   使用方式: 1. ...

  6. 利用Python爬取电影网站

    #!/usr/bin/env python #coding = utf-8 ''' 本爬虫是用来爬取6V电影网站上的电影资源的一个小脚本程序,爬取到的电影链接会通过网页的形式显示出来 ''' impo ...

  7. 符合Python风格的对象

    array和bytes的转换 - 每个array必须有一个type_code,以此为依据解析底层字节序列 - array有一个frombytes方法,可以把字节序列按type_code转换成Array ...

  8. mysql导入大批量数据出现MySQL server has gone away的解决方法

    因工作需要,需要导入一个200M左右的sql到user库 执行命令 mysql> use user Database changed mysql> source /tmp/user.sql ...

  9. 基础概念——令人迷惑的EOF

    EOF概念常常使人迷惑. 首先我们要理解并没有像EOF字符这样的东西. 进一步讲EOF是由内核检测到的一种条件. 应用程序在它接收到由read函数返回的零返回码时,它就会发现EOF条件. 对于磁盘文件 ...

  10. 使用go写一个简单的exe文件

    工作需要一个小工具给分析师用,原先打算写一个脚本的,但是呢我又不会用python,要写的话只能用java来实现(打包成可执行jar,使用java -jar 的命令来执行,当然得安装jdk).这种命令行 ...