extends繼承和override重寫的用法
/**
* 測試extends繼承 java三大屬性之一
* 測試override重寫
* 測試final修飾
*/
class Children{
? ?String name;
? ?int age ;
? ?Children friend;
? ?public void pn(){
? ? ? ?System.out.println(name);
? ?}
}
class Student1{
? ?String name;
? ?int age ;
? ?Children friend;
? ?public void pn(){
? ? ? ?System.out.println(name);
? ?}
? ?//屬性方法和Children一致
? ?String major;
? ?public void pm(){
? ? ? ?System.out.println(major);
? ?}
}
class Student2 extends Children{
? ?//繼承了Children類的所有內(nèi)容 name age pn friend
? ?public void pa(){
? ? ? ?System.out.println(age);
? ? ? ?//直接調(diào)用繼承過來的的age
? ? ? ?pn();
? ?}
? ?String major;
? ?public Student2(String name,int age,String major){
? ? ? ?this.name = name;
? ? ? ?this.age = age;
? ? ? ?this.major = major;
? ?}
public class?TestExtends {
? ?public static void?main(String[] args) {
? ? ? ?Student2 s1 =?new?Student2("a",10,"Math");
? ? ? ?System.out.println(s1?instanceof?Student2);
? ? ? ?//instanceof運算符 判斷對象s1是否屬于類Student2
? ? ? ?System.out.println(s1?instanceof?Children);
? ? ? ?//判斷s1是否屬于父類Children?結(jié)果true
? ? ? ?Student1 s2 =?new?Student1();
? ? ? ?System.out.println(s2?instanceof?Student1);
? ? ? ?//System.out.println(s2 instanceof Children);報錯 結(jié)果false
? ?}
}
}
class Student3{
? ?//不寫明extends 默認(rèn) Student3 extends java.lang.Object
}
class Student4 extends Children{
? ?Student4 friend;
? ?//重寫override 把Children類里的friend屬性重定義,父類原始屬性不受影響
? ?//重寫的范圍小于等于父類的原型 父類的friend是Children型 子類是Student4小于等于Children
? ?short age;
? ?//父類age是int 子類age是short小于等于int
? ?public void pn(){
? ? ? ?System.out.println("The name is "+name);
? ?}
? ?//對原方法重寫 更改內(nèi)容
}
final class Student5 extends Children{
? ?//final修飾的類不能再往下繼承 常見String Math類都是final
? ?final int age =10;
? ?//繼承的屬性可以final 不可再修改 不影響父類age
? ?final public void pn(){
? ? ? ?System.out.println(""+name+age);
? ?}
? ?//final的方法不可重寫 可以重載overload
}