1、继承的概念与应用
继承是Java三大特征之一。
继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
这是百度百科对继承的解释,通俗的来讲,继承就像是父与子的关系,儿子可使用一切父亲已经拥有的且不属于父亲私有的东西,如果父亲给与的某些方面没有达到儿子的目标,儿子还可以对其进行改进,而那些儿子满足的部分,儿子就可以不用重新获得,也就是说不用重新编写一些重复的代码。
例如一个公司的员工管理系统,根据不同的部门肯定要分为很多个类,不过所有的员工都要有一些基本的公共的信息,比如:姓名、年龄、生日、工作时间等。如果每个类中都对这些信息有个定义的话,那这样会浪费很多不必要的代码空间,这个时候我们只需要在一个大的父类,比如不管哪个员工都应该是一个人,当然也可能不是人,但是从生理角度来说都是个人。那么我们只需要在父类中定义一次,其它类直接继承过来便可以节省出大量的空间。
当然从上面我们也可以看出,如果要想具有相同的父类那么必须要满足一个条件,比如不管哪个部门的员工都是一个人。那么我们用学术语言来表达就是
**继承的应用场景:
1、使用继承,需要考虑类与类之间是否存在is..a的关系,不能盲目使用继承
2、is..a的关系:谁是谁的一种,例如:老师和学生是人的一种,那人就是父类,学生和老师就是子类**
2、继承的特点
Java中继承的特点
Java中类只支持单继承,不支持多继承
错误范例:class A extends B, C { }
Java中类支持多层继承
正确范例:
class A {}
class B extends A{ }
class C extends B{ }
2、1 继承中成员变量的访问特点
在子类中访问成员变量,采用的是就近原则,一般过程为:
子类局部范围找>>>子类成员范围找>>>父类成员范围找
如果没有找到的话程序会报错
注如果一定要使用父类中的成员变量的话,可以使用super关键字。如果要使用本类成员变量的话,可以使用this关键字。
2、2 继承中成员方法的访问特点
子类中访问方法的过程和访问变量的过程十分相似,都是先在本类中找,找不到了就去父类中找,如果都没有的话,就会报错。
但是如果在子类方法和父类方法中出现了同名的方法后,那么就要说到方法的重写。
方法的重写
方法重写的前提是,子类和父类中出现了相同的方法名称。
为什么要进行方法重写?
因为父类提供的方法功能不能满足子类的需求,所以子类要进行方法的重写。
方法的重写可以用Override来进行注解,来检验当前的方法是否为重写的方法。
方法重写的注意事项
1、父类中私有方法不能被重写(父类私有成员子类是不能继承的)
2、父类中静态方法不能被子类重写(如果子类也有一个一模一样的,并不是重写)
3、子类重写父类方法时,访问权限必须大于等于父类(public > 默认 > 私有)
权限修饰符
private 默认 protected public 是四种修饰符,其中最常用的是private和public 修饰符