继承层次
两个类之间可以发生继承,称之为父类和子类,那么一个类可以继承多个类吗?
想象一下,现实生活中,一个儿子有几个爸爸(亲生)?
现实中,没有人会有两个亲爹。
Java当中,一个类没有两个父类。
一个类有且仅有一个父类,这种特性被称之为“单重继承”,Java不支持多重继承(重点)
为什么?
1,语法设计
2,多重继承会来带麻烦
Java虽然不支持多重继承,但是父类还有父类,从而形成了继承链
两个重要概念:
1,继承层次:由某个祖先类派生出来的所有类的集合叫做继承层次
2,继承链:从某一个子类开始,到其祖先类的路径
继承层次中需要注意的地方:
1,在继承链中,下游类是上游类的子类,不管隔了几层
2,在继承链中的,下游的类总是继承上游类的成员
3,在继承链中,下游类总可以看成一个上游类
4,如有必要,可以无限继承下去
5,不在同一继承链中的类,没有任何关系
使用继承的注意事项
我们已经提到过,Java当中的继承不是随心所欲的,而是由一定的限制
那我们先来学习最简单的两个限制
- 不能继承父类的私有成员
- 不能继承父类的构造方法
- 但是使用super关键字可以调用
- 构造器是创建对象用的,继承别人的构造器没有太大的意义
除了限制,某些情况可能不适合去使用继承,不要盲目使用继承
- 我们已经知道,继承中的两个类是“is-a”关系
- 教师类继承人类,学生类继承人类是可以理解的,也是符合继承的思想的
- 但是教师类中有姓名属性,学生类有姓名属性,能为了这个姓名属性,让学生类继承教师类吗?
子类对象初始化

题目实例:
a. 声明一个Person类,里面定义了三个属性,name、gender、age(姓名、性别、年龄)
通过构造方法进行赋值。有一个display方法,可以展示对应的姓名性别年龄信息b. 声明一个Student类,继承自Person类,增加一个独特的属性id(学号)
通过构造方法进行赋值,同时有一个方法可以展示姓名性别年龄学号信息c. 声明一个Teacher类,继承自Person类,增加course属性(教学课程)
通过构造方法进行赋值,有一个方法,可以显示姓名性别年龄教学课程信息d.编写一个测试类,验证你的代码.(分别创建Student对象,和Teacher对象,
要求利用子类对象的显示初始化,即在子类构造方法中,调用父类构造方法的方式 来初始化子类对象。)
package com.company;
public class Main {
public static void main(String[] args) {
Person person = new Person("大王", '男', 20);
person.display();
Student student = new Student("dw", '男', 20, 9);
student.display();
Teacher teacher = new Teacher("DW", '男', 20, "编程");
teacher.display();
}
}
class Person {
String name;
char gender;
int age;
public Person(String name, char gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
}
public void display() {
System.out.println("姓名:" + name + "\t" + "性别:" + gender + "\t" + "年龄:" + age + "\t");
}
}
class Student extends Person {
int id;
public Student(String name, char gender, int age, int id) {
super(name, gender, age);
this.id = id;
}
public void display() {
System.out.println("姓名:" + name + "\t" + "性别:" + gender + "\t" + "年龄:" + age + "\t" + "学号:" + id + "\t");
}
}
class Teacher extends Person {
String course;
public Teacher(String name, char gender, int age, String course) {
super(name, gender, age);
this.course = course;
}
public void display() {
System.out.println("姓名:" + name + "\t" + "性别:" + gender + "\t" + "年龄:" + age + "\t" + "课程:" + course + "\t");
}
}
输出:
姓名:大王 性别:男 年龄:20
姓名:dw 性别:男 年龄:20 学号:9
姓名:DW 性别:男 年龄:20 课程:编程
本文围绕Java继承展开,介绍了Java是单重继承,不支持多重继承,形成的继承链中有继承层次等概念。还阐述了使用继承的注意事项,如不能继承父类私有成员和构造方法等,最后给出了子类对象初始化的题目实例。
643

被折叠的 条评论
为什么被折叠?



