、继承
一、概述:
在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称做子类,现有类被称做父类,子类会自动拥有父类全部可继承的属性和方法。
二、格式
经过 extends 关键字,能够声明一个子类继承另一个父类
[Java] 纯文本查看 复制代码
?ide
class 父类 {函数
...
}
class 子类 extends 父类 {测试
...
}this
举例:
[Java] 纯文本查看 复制代码
?code
/*对象
*/
class Employee {继承
String name; // 定义name属性 // 定义员工的工做方法 public void work() { System.out.println("全力以赴地工做"); }
}
/*class
*/
class Teacher extends Employee {基础
// 定义一个打印name的方法 public void printName() { System.out.println("name=" + name); }
}
/*变量
*/
public class ExtendDemo01 {
public static void main(String[] args) { // 建立一个讲师类对象 Teacher t = new Teacher(); // 为该员工类的name属性进行赋值 t.name = "小明"; // 调用该员工的printName()方法 t.printName(); // name = 小明 // 调用Teacher类继承来的work()方法 t.work(); // 全力以赴地工做 }
}
三、继承的好处
1.提升代码的复用性。
2.类与类之间产生了关系,是多态的前提。
四、继承后的特色
1.成员变量不重名
[Java] 纯文本查看 复制代码
?
class Fu {
// Fu中的成员变量。 int num = 5;
}
class Zi extends Fu {
// Zi中的成员变量 int num2 = 6; // Zi中的成员方法 public void show() { // 访问父类中的num, System.out.println("Fu num="+num); // 继承而来,因此直接访问。 // 访问子类中的num2 System.out.println("Zi num2="+num2); }
}
class ExtendDemo02 {
public static void main(String[] args) { // 建立子类对象 Zi z = new Zi(); // 调用子类中的show方法 z.show(); }
}
演示结果:
Fu num = 5
Zi num2 = 6
2.成员变量重名
[Java] 纯文本查看 复制代码
?
class Fu {
// Fu中的成员变量。 int num = 5;
}
class Zi extends Fu {
// Zi中的成员变量 int num = 6; public void show() { // 访问父类中的num System.out.println("Fu num=" + super.num); // 访问子类中的num System.out.println("Zi num=" + this.num); }
}
class ExtendsDemo03 {
public static void main(String[] args) { // 建立子类对象 Zi z = new Zi(); // 调用子类中的show方法 z.show(); }
}
演示结果:
Fu num = 5
Zi num = 6
注意:
子父类中出现了同名的成员变量时,在子类中须要访问父类中非私有成员变量时,须要使用super 关键字,修饰父类成员变量,相似于以前学过的 this 。
使用格式:super.父类成员变量名
3.成员方法不重名
[Java] 纯文本查看 复制代码
?
class Fu{
public void show(){ System.out.println("Fu类中的show方法执行"); }
}
class Zi extends Fu{
public void show2(){ System.out.println("Zi类中的show2方法执行"); }
}
public class ExtendsDemo04{
public static void main(String[] args) { Zi z = new Zi(); //子类中没有show方法,可是能够找到父类方法去执行 z.show(); z.show2(); }
}
4.成员方法重名(重写override)
方法重写:子类中出现与父类如出一辙的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,从新实现。
五、注意事项
1.子类方法覆盖父类方法,必需要保证权限大于等于父类权限。
2.子类方法覆盖父类方法,返回值类型、函数名和参数列表都要如出一辙。
3.私有方法不能被重写(父类私有成员子类是不能继承的)
六、super和this
super :表明父类的存储空间标识(能够理解为父亲的引用)。
this :表明当前对象的引用(谁调用就表明谁)。
访问成员:
this.成员变量 -- 本类的
super.成员变量 -- 父类的
this.成员方法名() -- 本类的
super.成员方法名() -- 父类的
七、继承特色1.Java只支持单继承,不支持多继承。2.Java支持多层继承(继承体系)。3.全部的类都直接或者间接继承了Object类,Object类是全部类的父类。