一、继承性
继承是面向对象的第二大特性,而继承性要解决的就是代码重用问题,利用继承性可以从已有的类继续派生处新的子类,也可以利用子类扩展处更多的操作功能
继承性严格来讲就是指扩充一个类已有的功能。如法如下:
class 子类 extends 父类{}
继承的基本实现:
package oop; /** * 面向对象三大特性之一-----继承性 */ class Person{//定义一个人类 private String name;//定义属性名字 private int age;//定义属性年龄 //定义get和set方法设置和获取属性 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; } } class Student extends Person{//定义一个学生类继承人类 private String school;//定义学生类特有属性 //定义get和set方法 public String getSchool() { return school; } public void setSchool(String school) { this.school = school; } } //定义测试类 public class TestDemo { public static void main(String[] args) { Student stu=new Student(); stu.setName("小齐" ); stu.setAge(23); stu.setSchool("北京大学"); System.out.println("姓名:"+stu.getName()+",年龄:"+stu.getAge()+",学校:"+stu.getSchool()); } }
-
子类即使不扩充父类,也属于维持功能的状态
-
子类实际上是将父类定义得更加具体化得一种手段
继承的限制:
限制一:Java中不允许多重继承,只允许多层继承(继承关系最多不要超过三层)
class A{} class B extends A{} class C extends B{}
限制二:子类继承父类时,严格来讲会继承父类的全部操作,但是对于所有的私有属性属于隐式继承,而所有的非私有属性操作属于显示继承
限制三:在子类对象构造前一定会默认调用父类的构造(默认使用无参构造),以保证父类的对象先实例化,子类对象后实例化
super()方法主要是调用父类的构造方法,所以必须放在子类构造方法的首行
当父类中提供有无参的构造方法时,是否编写super()没有区别。但是如果父类中没有无参构造方法,则必须明确地使用super()调用父类指定参数地构造方法