一、继承性
继承是面向对象的第二大特性,而继承性要解决的就是代码重用问题,利用继承性可以从已有的类继续派生处新的子类,也可以利用子类扩展处更多的操作功能
继承性严格来讲就是指扩充一个类已有的功能。如法如下:
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()调用父类指定参数地构造方法
本文详细介绍了Java中的继承特性,如何通过继承实现代码复用,并通过一个Person到Student的例子展示继承的实现方式。同时,文章提到了继承的限制,包括Java不支持多重继承,但允许多层继承,以及子类构造前会默认调用父类构造。此外,还讨论了super关键字的作用以及使用规则。

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



