学习知识:属性继承、方法继承、属性遮蔽、私有继承。
main.java:
public class main {
public static void main(String[] args){
MakaRi Mak=new MakaRi();
//继承关系:Human -> Coder -> MakaRi
Mak.name="Mak4R1";//修改MakaRi的name属性
Mak.age=19;//age属性继承自类Human
Mak.language="JAVA";//language属性继承自类Coder
Mak.setName("MakaRi");
Mak.introduce();//introduce方法继承自属性Human
Mak.codeintroduce();//codeintroduce方法继承自属性Coder
Mak.Makintroduce();//MakaRi的方法
Mak.useprivate();
}
}
Human.java:
public class Human {
String name;
int age;
void introduce(){
System.out.printf("我叫%s,我今年%d岁了!%n",this.name,this.age);
}
private void introduce1(){
System.out.println("这是一个私有方法。");//有修饰符private,不能被直接继承。
}
public void useprivate(){
this.introduce1();
}
}
Coder.java:
public class Coder extends Human{
String language;
void codeintroduce(){
System.out.printf("我叫%s,是一名%s程序员!%n",this.name,this.language);
}
}
MakaRi.java:
public class MakaRi extends Coder{
String name;
void setName(String supname){
super.name=supname; //此处调用super关键字,会顺着继承链向上寻找name属性,最终在Human类找到并修改。
}
void Makintroduce(){
System.out.printf("我叫%s,是一名%s程序员!我喜欢玩LOL。%n",name,this.language);
//由于在此类中也定义了name属性,所以这里会产生属性遮蔽,调用此类的属性而非父类的属性。
}
}
运行结果: