0.特性、与C++部分区别:
- 子类拥有父类非 private 的属性、方法。
- 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
- 子类可以用自己的方式实现父类的方法。
- Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 B 类继承 A 类,C 类继承 B 类,所以按照关系就是 B 类是 C 类的父类,A 类是 B 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
- 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。
- Java有个最高层的类 Object。Java中的每一个类都直接或间接继承于Object。
1.子类继承父类的哪些?
误区:
- 父类私有的东西,子类无法继承;
- 父类非私有,子类全部继承。
此处“非私有”包括public和protected
- 从父类继承的private成员变量,(虽然继承下来了),不能直接使用。可以通过相关方法操作。
- 只有父类的虚方法才可以被继承。
不在虚方法表中的方法
private
修饰的方法:由于无法被子类重写,因此不会存储在虚方法表中。static
修饰的方法:静态方法束缚于类本身,不会被重写。final
修饰的方法:无法在子类中被重写,因而不在虚方法表中。
2.关键字:extend
在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类。
public class Animal {
private String name;
private int id;
public Animal(String myName, int myid) {
//初始化属性值
}
public void eat() { //吃东西方法的具体实现 }
public void sleep() { //睡觉方法的具体实现 }
}
public class Penguin extends Animal{
}
3.super 与 this 关键字:
用于解决子类父类重名(或被重写)成员的访问。
- super 关键字:我们可以通过 super 关键字来实现对父类成员的访问,用来引用当前对象的父类。
- this 关键字:指向自己的引用,引用当前对象,即它所在的方法或构造函数所属的对象实例。
4.方法的重写:@Override
当父类的方法不能满足子类的需求,需要进行方法重写。
书写时需要注解:@Override
重写要求:
- 重写方法的名称、形参列表必须与父类一致;
- 重写时,访问权限子类必须大于等于父类(public>protected>空着不写)
- 只有在虚方法表里的方法才能被重写
注意与重载区别。
4.final关键字
final 可以用来修饰变量(包括类属性、对象属性、局部变量和形参)、方法(包括类方法和对象方法)和类。
final 含义为 “最终的”。
使用 final 关键字声明类,就是把类定义定义为最终类,不能被继承,或者用于修饰方法,该方法不能被子类重写: