Java的继承
面向对象第二大特征:继承
1.什么是继承?
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承的本质是对某一批类的抽象。
继承是类与类之间的关系。
2.继承关系的两个类:
1)基类:父类
2)派生类:子类
例如生活中的例子:

兔子和羊都属于食草动物,狮子和豹属于食肉动物,食草动物和食肉动物又都属于动物
虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,
因此,羊和兔子,狮子和豹 都会继承动物类(父类)的一些属性和方法,但也会具有各自食草动物类、食肉动物类的特性。
3.继承的表示方式
用extends关键字来表示子类继承父类。
例如:父类Person
class Person{ }
子类Student 继承父类Person,表示方法如下:
class Student extends Person{ }
4.为什么需要继承?
假设有两个类,Student和Teacher:
Student属性(姓名,年龄) 方法(说话,学习)
Teacher属性(姓名,年龄) 方法(说话,教书)
Student类代码
public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public void say(String name){ System.out.println(name + "说话!"); } public void study(String name){ System.out.println(name + "学习!"); } }
Teacher类代码
public class Teacher { private String name; private int age; public Teacher(String name, int age) { this.name = name; this.age = age; } public void say(String name){ System.out.println(name + "说话!"); } public void teach(String name){ System.out.println(name + "教书!"); } }
我们看到Student和Teacher类中的姓名、年龄这些属性 和 方法say是重复了,这样每个类代码重复且臃肿,维护性不高,因此我们可以从这2个类再进行抽象,抽象成一个Person类,把公共部分提取出来。
Person类代码
public class Person { private String name;//把Student、Teacher类的name抽象 private int age;//把Student、Teacher类的age抽象 //父类的构造器 public Person(String name, int age) { this.name = name; this.age = age; } //把Student、Teacher类的方法抽象成父类的方法say() public void say(){ System.out.println(name + "说话!"); } }
Student类代码
public class Student extends Person { public Student(String name,int age) { super(name, age);//用关键字super调用父类的构造方法 } public void study(String name){ System.out.println(name + "学习!"); } }
Teacher类代码
public class Teacher extends Person { public Teacher(String name,int age){ super(name, age);//用关键字super调用父类的构造方法 } public void teach(String name){ System.out.println(name + "教书!"); } }
我们用一个Test类 来测试代码
public class Test { public static void main(String[] args) { Student student = new Student("小明",23); Teacher teacher = new Teacher("王老师",39); student.say();//继承父类Person的方法say() teacher.say();//继承父类Person的方法say() student.study("小英");//自身类的方法 teacher.teach("李老师");//自身类的方法 } }
执行结果

5.继承说明
Java只有单继承,不支持多继承,但可以有多重继承,即一个子类,只有一个父类,一个父类,可以有多个子类。

6.继承特性
1)在Java中所有的类都默认直接或间接继承Object类,例如我们在idea 开发工具中 ,可以看到

2)继承的子类拥有父类非 private 的属性、方法。
3)子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
4)子类可以用自己的方式实现父类的方法。(方法重写rewrite)
5)在idea中可以用快捷键ctrl+H 打开继承树,通过继承树我们可以看到类之间的层次关系,最高的父类是Object



浙公网安备 33010602011771号