zoukankan      html  css  js  c++  java
  • 二、Java面向对象(8)_继承思想——继承关系

    2018-05-01

    劳动是为了更好的享受生活。

     

    继承思想

     

    一、继承的概念

      继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的某些数据属性和行为,并能扩展新的能力。

      继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法。

      继承就是子类通过继承父类的方式获得父类的public/protected变量和方法使用权”的一个东西。

     

      被继承的类:super class (父类/超类/基类/被拓展类)

      sub class:子类/拓展类  

     

      父类:用来存放共性(共同的特性(状态和行为))

      子类:用来存放特性(自己特有的特性(状态和行为))

     

      继承可以解决代码重复的问题,真正的作用是表达出一个体系。

    二、继承关系

     

    1、什么是继承关系?

      基于某个父类对对象的定义(这里的定义包括字段、方法以及内部类)加以拓展,而产生新的类的定义,子类可以继承父类原有的某些定义,也可以增加父类原来所没有的定义,或者覆盖(修改)父类中的某些特性。

      从面向对象来说,继承是一种从一般到特殊的关系,在逻辑上其本质是is-a的关系。即子类是父类的拓展,它是一种特殊的父类。

      比如狗是动物的一种特殊情况,狗属于动物。比如赤兔马,既是马,也是动物。

       -----------------------------------------------------------------------------------------------------------------------------

    2、类的继承格式

      在 Java 中通过 extends 关键字可以申明一个类继承另外一个类,一般形式如下:

     

       class 父类类名 {
      
       }
     
         class 子类类名 extends 父类类名 {
        //编写自己特有的状态和行为
         }
      
      看图:
      
      

      ---------------------------------------------------------------------------------------------------------------------------

    3、继承的分类

      在Java中,类和类之间的继承关系只允许单继承,不允许多继承。单继承就是一个子类只能继承一个父类。多继承是一个子类可以有二个或以上的父类。也就是说类A,只能有一个直接的父类,类A不能同时继承类B和类C。而接口支持多继承。

      Java中允许多重继承。多重继承就是,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类。

      -------------------------------------------------------------------------------------------------------------------------------------------------------------

    4、Object类

      java.lang.Object

      java.lang包在使用的时候无需显示导入,编译时由编译器自动导入。

      Object类是类层次结构的根,Java中所有的类从根本上都继承自Object类,即Object类要么是一个类的直接父类,要么是一个类的间接父类

      Object类是Java中唯一没有父类的类(不能自己继承自己)

      其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。

      -----------------------------------------------------------------------------------------------------------------

    二、子类到底继承了父类那些成员?(根据访问修饰符来判断)  

    • 父类的 public 成员继承为子类的public 成员,就好像他们直接定义在子类中一样。
    • 父类的 protected 成员继承为子类的protected 成员。就好像他们直接定义在子类中一样。
    • 父类的 包访问成员(父类和子类在同一个包中,父类使用缺省修饰符) 继承为子类的包访问成员。就好像他们直接定义在子类中一样。
    • 父类的private成员不能被子类继承,因为private只能在本类中访问,子类不能访问。但是子类对象的确包含父类的私有成员。  
    • 父类的构造器不能被子类继承,因为构造器必须和当前类名相同。  

    注意:不要背诵文字,应该写代码去实践。

  • 相关阅读:
    coding++:SpringBoot-事务注解详解
    coding++:java-自定义签名+拦截器
    linux++:Linux
    coding++:java-全局异常处理
    POJ 2823 双端队列
    POJ 3250 栈
    10进制数字向0~3999的罗马数字的转换
    POJ 1986 LCA
    POJ 1236 强联通分量
    河南工业大学2017校赛题解
  • 原文地址:https://www.cnblogs.com/sunNoI/p/8976776.html
Copyright © 2011-2022 走看看