Java 继承
继承(inheritance)是面向对象编程的三要素(封装、继承、多态)中最重要的一个。
Java中同样拥有继承的概念。子类继承父类,父类被子类继承。
Java不同于C++,类的继承只能是单继承。一个子类只能有一个直接父类。
继承的优势
子类继承父类的状态和行为,有以下两个优势:
- 可以修改父类的状态或重载父类的行为
- 可以添加新的状态和行为
使用继承
使用关键字extends
来实现继承
class Student extends Person{
// ...
}
如果没有extends
,则该类默认为java.lang.Object
的子类
所有的类都是通过直接会间接继承自java.lang.Object
得到的
继承包括字段的继承和方法的继承。
子类既可以使用父类的成员、方法,也可以重新定义一个类型完全相同的成员、方法。这种行为称为修改(覆盖) (@Override)
此外,继承同样可以进行方法的重载。
this 和 super
- this为本对象实例的引用,可以在对象的成员方法中调用this来访问当前对象的字段或方法。
class Person{
String name;
Person(){};
Person(String name){
this.name = name;
}
void sayHello(){
System.out.println("Person " + name + " Say Hello to you.");
}
}
- super也是本对象实例的引用,可以用super来调用父类的字段或方法。super主要用来解决这些问题
- 子类方法已将父类方法覆盖,但需要在子类中访问父类的方法
class Student extends Person{
String id;
Student(){};
void sayHello(){
System.out.println("Student " + name + "Say Hello to you");
}
void testSuper(){
super.sayHello();
this.sayHello();
}
}
2. 子类的构造方法一部分需要用到父类的构造方法
class Student extends Person{
String id;
Student(){};
Student(String name,String id){
super(name); // 调用父类的构造方法
this.id = id;
}
}