什么是继承?
继承是面向对象三大特征之- - 。java中的继承描述的是两个类之间的关系,被继承的类称为父类,继承的类称为子类,使用extends关键字来表示。
在java语言里面只支持单继承
,即-一个类只能有一-个父类,子类可以继承父类中的非private修饰的成员方法和成员变量,构造方法不能被继承,java里面的继承跟现实生活中的继承颇为相似,现实生活中- -个儿子只能有一-个父亲, 儿子可以继承父亲的房子车子但是不能继承父亲大脑里面的思想和知识。
如果一个类没有显示的继承其他类, 那么这个类会默认继承0bject类,Object是SUN公司提供的java中的根类。
继承的优点
■提高了代码的复用性
■提高了代码的维护性
■让类与类之间产生了关系,是多态的前提
继承的缺点
增强了类之间的耦合。
软件开发的一个原则是高内聚,低耦合。
内聚是一个模块内各个元素彼此结合的紧密程度
耦合是一个软件里面不同模块之间相互连接的数量
注意:
1.error子类不能访问父类中的private的修饰方法
2.子类是可以访问到其祖先类的方法的
重写
重写也叫覆盖,当父类中的方法无法满足子类需求时,子类可以将父类的方法重写编写来满足需求。比如孩子继承了父亲的房子,可以将房子重新装修。
方法重写的条件:
1.两个必须是继承关系
2.必须具有相同的方法名,相同的返回值类型,相同的参数列表。
3.重写的方法不能比被重写的方法拥有更低的访问权限。
4.重写的方法不能比被重写的方法抛出更宽泛的异常。(关于异常后面的章节再讲。)
5.私有的方法不能被重写。
6.构造方法无法被重写,因为构造方法无法被继承。
7.静态的方法不存在重写。
8.重写指的是成员方法,和成员变量无关。
什么是super?
super代表的是当前子类对象中的父类型特征。
什么时候使用super?
.子类和父类中都有某个数据,例如,子类和父类中都有name这个属性。如果要再子类中访问父类中的name属性,需要使用super。例1
的name属性,需要使用super。例1
■子类调用父类中的构造方法时,需要使用super。
注意: super不能用在静态方法中。