继承——解决之道
继承可以解决代码复用,让我们的编码更加靠近人类思维,当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extends语句来声明继承父类:class 子类 extends 父类,这样,子类就会自动拥有父类定义的某些属性和方法。
class Stu{
public int age;//年龄
public String name;//名字
public float fee;//学费
public void printName(){
System.out.println("名字:"+this.name);
}
}
//小学生类
class Pupil extends Stu{
//定义成员属性
//private int age;
//private String name;
//private float fee;//因为已经继承了Stu类这些属性就不需要重新定义了
//缴费
public void pay(float fee){
this.fee=fee;
}
//中学生类
class MidStu extends Stu{
//缴费
public void pay(){
this.fee=fee*0.8f;
}
}
//大学生类
class ColStu extends Stu{
//缴费
public void pay(float fee){
this.fee=fee*0.1f;
}
}
}
在编程中,如果你不希望子类继承某些属性或方法,则将其声明为private
父类的哪些属性(变量),方法被子类继承了?并不是父类的所有属性、方法都可以被子类继承,请看:
从图可以看出,父类的public修饰符的属性和方法,protected修饰符的属性和方法,默认修饰符的属性和方法被子类继承了,匪类的private修饰符的属性和方法不能被继承。