Java面向对象_继承思想——继承关系

Posted sunNoI

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面向对象_继承思想——继承关系相关的知识,希望对你有一定的参考价值。

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只能在本类中访问,子类不能访问。但是子类对象的确包含父类的私有成员。  
  • 父类的构造器不能被子类继承,因为构造器必须和当前类名相同。  

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

 

 

 

以上是关于Java面向对象_继承思想——继承关系的主要内容,如果未能解决你的问题,请参考以下文章

Java 面向对象程序设计思想

继承(实现)关系

08 Java面向对象之继承

Java 面向对象_继承

OOP(面向对象编程)

面向对象_05类的继承:extends重写父类