什么是继承关系: 现有父类,加以拓展
可以是基于某个父类对对象的定义加以拓展,而产生新的子类,子类可以继承父类原来的某些定义,也可以增加原来父类没有的定义,或者覆写父类中的某些特性.
从面向对象来说:继承是从一般到特殊的关系,是一种"is a"的关系,即子类是对父类的拓展,是一种特殊的父类,
比如:狗是动物的一种特殊情况,狗属于动物.
--------------------------------------------------------------------------
在java语言中,存在多个类的时候,我们使用extends
语法格式:在定义子类的时候,来表明自己自己需要拓展哪一个类,
public class 子类类名 extends 父类类名
{
编写自己特有 的状态和方法
}
在java中,类和类之间的继承关系值允许单继承,不允许多继承
也就是说一个类A,只能有一个直接的父类,不能同时出现类A同时继承
于类B类C.
但是在 java中允许多重继承,
动物有卵生动物和胎生动物之分,胎生动物有老虎,老虎又分华南虎,东北虎等
-------------------------------------------
在java中除了Object类之外,每个类都有一个直接的类
比如: class Student extends Person{}
我们就说此时Student的直接父类是Person
问题:class Person{ }, 此时Person的父类又是谁?
Object类是java语言的根类(老祖宗,任何类都是Object的子类)
----------------------------------------------------------------------------------------
继承关系的作用:
1);解决了代码的重复问题
2):真正的作用,表示一个体系.
=========================================================================
先写父类还是先写子类
一般的,我们开发工程中先编写多个自定义类,写完之后,发现多个类之间存在多个代码,此时可以抽去出一个父类,
我们以后做开发,都是基于框架/组件来做的,我们是在别人的基础之上的,继续做开发
好比别人提供了清水房,我们只需要在清水房的基础之上装修,就可以使用.
以后,我们定义新的类去继承于框架中/组件中提供的父类.
=============================================
子类继承父类之后,可以拥有父类的某一些状态和行为(子类复用了父类的功能或状态).
子类继承了父类的哪些成员(根据访问修饰符来判断):
1):如果父类中的成员使用了public修饰,子类继承
2):如果父类中的成员使用了protected修饰,子类也是继承,即使父类和子类不在同一个包,
3):如果父类和子类在同一个包中,此时子类可以继承父类中缺省修饰符的成员.
4) ,如果父类中的成员使用private修饰,子类打死都继承不到,因为private只能在本类中访问
5),父类的构造器,子类也不能继承,因为构造器必须和类名相同