继承也是面向对象的特征之一,使用
extends
关键字.
class Person {
}
class Student extends Person {
}
Student类继承Person类,Person类称为父类也称为基类,Student类称为子类也称为派生类.
继承的好处:
1.提高了代码的复用性.
2.让类与类之间产生,给多态提供了前提.
注:Java中支持单继承.不直接支持多继承.
什么时候定义继承
当类与类之间存在所属关系的时候,就定义继承.
子父类中成员变量的特点
先看一个栗子
class Person {
public int age = 20;
}
class Student extends Person {
public int age = 30;
public void show() {
System.out.println(age + "..." + age);
}
}
输出结果为30...30
这有就表明当本类的成员变量和局部变量同名用this区分.
当子父类中的成员变量同名用super区分父类.
所以将代码改写成
class Person {
public int age = 20;
}
class Student extends Person {
public int age = 30;
public void show() {
System.out.println(this.age + "..." + super.age);
}
}
输出结果就为30...20
this和super
this:代表一个本类对象的引用.
super:代表一个父类的空间.
覆盖
当子父类中出现成员函数一模一样的情况.例如
class Person {
public int age = 20;
public void show() {
System.out.println(this.age);
}
}
class Student extends Person {
public int age = 30;
public void show() {
System.out.println(this.age);
}
}
上面的栗子是说方法(函数)名,一模一样而不是方法体.
出现这种情况会运行子类的函数,这种现象称为覆盖操作.这是函数在子父类中的特性.
覆盖注意事项
1.子类方法覆盖父类方法时,子类权限必须要大于或等于父类的权限.
2.静态只能覆盖静态,或被静态覆盖(少见).
函数两个特性
1.重载,在同一个类中.
2.覆盖,在子类中.覆盖也称为重写或覆写.