一、继承性是Java中一个重要的特性,起到了承上启下的作用,既是多态的基础又能对之前学过的基础有一个清晰的轮廓,下来就简单说下继承。
Tip: 利用继承性可以实现类结构的重用,通俗的来说就是通过继承,我们可以扩充一个类已有的功能,需要通过这样的语法格式来完成:class 子类 extends 父类{…};子类是可以拥有父类的内容的,而在大多数正常情况下,子类都要比父类复杂一些(因为儿子比爸爸优秀嘛哈哈)。
注意:Java中只允许多层继承,而不允许多重继承,意思就是extends后面跟了不止一个父类这样子。
二、简单的说完了继承,又得说到方法的重载与覆写,而覆写又与继承紧密相关。就是当父类某些方法无法满足子类设计需求的时候,可以针对已有的方法进行扩充,那么这个时候在子类中定义与父类方法名称相同的方法的时候(严格的来说还要加上返回值类型,参数的类型和个数),就称为方法覆写。
自己总结的小技巧:创建的对象是谁,就优先用谁的方法。
Tip: 如果在子类中需要调用父类已经覆写过的方法,就用"super.方法()" 的形式进行调用。说到super还要再多说一句,还有"super()"这种形式,它表示在子类中明确调用父类的无参构造,如果不巧父类中没有提供无参构造方法时,还可以通过"super(参数,…)"的形式去调用父类指定参数的构造方法。
注意:以上两种形式,不论哪一种都必须放在子类构造方法的首行。
以上就是理论内容,说的再多不如代码来的实在,搬上跟继承和方法覆写相关的实例代码,如下:
//继承
class Personfu{
private String name;
private int age;
public Personfu(String name, int age){
this.name = name;
this.age = age;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void play(){
System.out.println("我是父");
}
}
class Personzi extends Personfu{
private String school;
public void setSchool(String school) {
this.school = school;
}
public String getSchool() {
return school;
}
public Personzi(String name, int age, String school){
//构造传入汽车信息,方便之后的普通方法使用(输出)
//子类构造中有父类属性,那么必须明确调用父类构造,用super关键字
super(name,age);
this.school = school;
}
public void play(){
System.out.println("我是子");
}
}
public class demo10{
public static void main(String[] args) {
Personzi child = new Personzi("xiaoming",12,"tuanjie");
//错误写法如下():
//System.out.println("名字:" + this.name + "年龄:" + this.age + "学校" + this.school);
//正确写法:
System.out.println("名字:" + child.getName() + "、年龄:" + child.getAge() + "、学校" + child.getSchool());
System.out.println("在方法名相同时,谁new的就用谁的:");
child.play();
}
}
自己的一些心得会在代码后面注释。