面向对象的特征二:继承性
1.为什么要设计继承性?(见图示)
2.通过“class A extends B”实现类的继承。 子类:A 父类:B(或者基类SuperClass)
3.子类继承父类以后,父类中声明的属性、方法,子类就可以获取到。
明确:
1)但父类中有私有属性或方法时,子类同样可以获取得到,只是由于封装性的设计,使得子类不可以直接调用罢了
2)子类除了通过集成,获取父类的结构之外,还可以定义自己的特有的成分。
3)extends:子类是对父类功能的“扩展”,明确子类不是父类的子集。
4.Java中类的的继承性只支持单继承!一个类只能继承一个父类。反之,一个父类可以有多个子类。
5.子类父类是相对的概念。
图示:
代码示例:
public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void eat(){ System.out.println("吃饭"); } public void walk(){ System.out.println("走路"); } } public class Student extends Person { private String schoolName; public Student() { } public Student(String name, int age) { this.setName(name); //此次还没学习super先用this代替 this.setAge(age); } public String getSchoolName() { return schoolName; } public void setSchoolName(String schoolName) { this.schoolName = schoolName; } public void info(){ System.out.println("我是一个学生"); } } public class Worker extends Person{ } public class Graduate extends Student{ public void show(){ System.out.println("我是一个研究生"); } } public class TestExtends { public static void main(String[] args) { Student student = new Student(); student.eat(); Worker worker = new Worker(); worker.eat(); Student student1 = new Student("小明", 12); String name = student1.getName(); int age = student1.getAge(); System.out.println(name + age); Graduate graduate = new Graduate(); graduate.eat(); graduate.info(); graduate.show(); } }
运行结果:
吃饭
吃饭
小明12
吃饭
我是一个学生
我是一个研究生
单继承示意图:
子类父类是相对的概念。