1、父類
package com.wyq.study;
public class Father{//書寫類
//書寫屬性
private String name;
private int age;
//提供共有的取值賦值方法
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
if(age<0||age>100){
System.out.println("年齡輸入有誤,請重新輸入。");
this.age = 1;
}else{
this.age = age;
}
}
public int getAge(){
return age;
}
//書寫無參構造方法
public Father(){
System.out.println("這里是Father的無參的構造方法");
}
public Father(String name,int age){
this.name =name;
this.setAge(age);
System.out.println("這里是Father的帶參的構造方法,參數分別是:"+this.name+"\t"+this.getAge());
}
//書寫普通方法
public void speak(String language,String work){
System.out.println("這里是父類Father普通方法的測試:其參數為:"+language+"\t"+work+"\t"+this.name+"\t"+this.getAge());
}
}
注意父類的speak方法
2、再寫子類
package com.wyq.study;
public class Son extends Father{
//屬性
private String schoolName;
private int clazz;
//屬性私有化
public void setSchoolName(String schoolName){
this.schoolName = schoolName;
}
public String getSchoolName(){
return schoolName;
}
public void setClazz(int clazz){
if(clazz<0||clazz>10){
System.out.println("班級的輸入有誤。");
this.clazz = 5;
}else
this.clazz = clazz;
}
public int getClazz(){
return clazz;
}
//無參構造
public Son(){
super();
System.out.println("這里是son類的無參構造");
}
public Son(String name,int age,String schoolName,int clazz){
super( name, age);
this.schoolName = schoolName;
this.setClazz(clazz);
System.out.println("這里是son類的帶參構造"+"\t"+super.getName()+"\t"+super.getAge()+"\t"+this.getSchoolName()+"\t"+this.schoolName+"\t"+this.getClazz());
}
//書寫普通方法
public void study(String course){
System.out.println("正在學習"+course+"\t"+this.schoolName+"\t"+this.getClazz());
}
@Override
public void speak(String language, String work) {
super.speak(language, work);
System.out.println("這里是重寫子類Son的測試,參數為:"+super.getName()+"\t"+super.getAge()+"\t"+this.getSchoolName()+"\t"+this.getClazz());
}
}
3、再寫測試類
package com.wyq.study;
public class TestSon {
public static void main(String[] args) {
Son s = new Son();//調用子類的無參構造
Son so = new Son("張三",20,"北京大學",2);
so.study("計算機");
System.out.println(so.getName()+"\t"+so.getAge()+"\t"+so.getSchoolName()+"\t"+so.getClazz());
so.speak("python", "碼農");
System.out.println("************************");
Father f = new Father("王五",-10);
f.speak("C語言", "工人");
}
}
4、測試結果
這里是Father的無參的構造方法
這里是son類的無參構造
這里是Father的帶參的構造方法,參數分別是:張三
20
這里是son類的帶參構造
張三
20
北京大學
北京大學
2
正在學習計算機
北京大學
2
張三
20
北京大學
2
這里是父類Father普通方法的測試:其參數為:python
碼農
張三
20
這里是重寫子類Son的測試,參數為:張三
20
北京大學
2
************************
年齡輸入有誤,請重新輸入。
這里是Father的帶參的構造方法,參數分別是:王五
1
這里是父類Father普通方法的測試:其參數為:C語言
工人
王五
1
5、總結
1)繼承:先寫父類,再寫子類;可以繼承父類非private屬性,可以繼承父類非private方法;對于父類的構造方法,子類可以調用,但是不能繼承。繼承使用的關鍵字是extends
2)最左側有"綠色"的實心三角,說明這個方法是重寫父類中的方法,方法上會有@的注解
3)方法的重寫
①在子類
②方法的名稱必須與父類的方法名稱相同
③子類所繼承的方法的必須與父類該方法的參數類型、順序、個數完全相同
④子類重寫方法的返回值類型必須與父類方法的返回值類型相同,或者與父類的子類的方法返回值類型相同。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。