版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_18948359/article/details/83868900
Java基础知识回顾之封装性
Java基础知识回顾之继承性
Java基础知识回顾之多态性
简介
继承的最大特征是解决代码的重用问题。特征是,一个父类可以拥有多个子类。子类继承父类的特性,并且子类可以有自己的"扩展特性"。
实现的方式
通过 class A extends B
类实现类的继承。
子类也配称为 派生类, 父类也配称为 基类(超类、Super Class)
class 父类 {
}
class 子类 extends 父类 {
}
特性说明
- 子类继承父类以后,父类中声明的属性、方法,子类就可以获取到。
特别说明:当父类中有私有的属性或方法时,子类同样可以获取得到,只是由于封装性 的设计,使得子类不可以直接调用罢了。如果需要访问,可以使用 super.属性
- 子类除了通过继承,获取父类的结构之外,还可以定义自己的持有的成分。
extends:子类是对父类功能的“扩展”,明确子类不是父类的子集。
继承的限制
代码实例
继承性实现的方式
在下面的代码中,Student
类是没有名称和年龄的属性,仅仅只是继承了 Person
类,然后在本类中定义了特有的属性。
class Person{
private String name;
private int age;
// getter 与 setter
public void setName(String name) {this.name = name;}
public String getName() {return this.name;}
public void setAge(int age) {this.age = age;}
public int getAge() {return this.age;}
}
class Student extends Person{ // 子类继承 父类的
// 子类特有的属性
private String school;
public String getSchool() {return school;}
public void setSchool(String school) {this.school = school;}
}
public class TestDemo {
public static void main(String[] args) {
Student student = new Student();
// 来自父类中的属性
student.setAge(20);
student.setName("张三");
// 来自本类中的属性
student.setSchool("哈佛学院--哈尔滨大学佛学院");
// 姓名:张三, 年龄:20, 学校:哈佛学院--哈尔滨大学佛学院
System.out.println("姓名:"+ student.getName() + ", 年龄:"+ student.getAge() +", 学校:"+ student.getSchool());
}
}
子类初始化的顺序
在子类对象构造器调用之前,一定会默认的调用父类的构造(默认使用父类的无参构造),以保证父类的对象先实例化,而后在实例化子类对象。
当子类在初始化的时候,会调用子类的构造方法,而此时会先去执行调用 super()
,默认的就会去调用,写与不写都是没有关系的。
class A{
A(){ // A的无参构造方法
System.out.println("A类中的构造方法");
}
}
class B extends A{
B(){ // B的无参构造方法
// super(); 父类中存在有无参构造方法时,加与不加是没有区别的
System.out.println("B类中的构造方法");
}
}
public class TestDemo {
public static void main(String[] args) {
new B();
// 输出的结果:
// A类中的构造方法
// B类中的构造方法
}
}