java基礎(chǔ)--面向?qū)ο螅ǚ庋b,繼承,多態(tài))

面向?qū)ο笕筇匦裕悍庋b,繼承,多態(tài)。
封裝:

將對(duì)象具有的一些屬性和方法打包到一起,隱藏屬性和方法的具體實(shí)現(xiàn)。即封裝。隱藏類的實(shí)現(xiàn)細(xì)節(jié),讓使用者只能通過指定的方法訪問數(shù)據(jù),限制不合理操作。便于修改,增強(qiáng)代碼的可維護(hù)性。

如何實(shí)現(xiàn)封裝:

將成員變量聲明為私有的,再提供一個(gè)或多個(gè)公有(public)set或get方法實(shí)現(xiàn)對(duì)該成員變量的訪問和修改。

繼承:

將一個(gè)已有類中的屬性和方法保留,再加上自己特有的屬性和方法形成一個(gè)新的類。即繼承。通過extends實(shí)現(xiàn)。
要調(diào)用父類的構(gòu)造方法,可用super關(guān)鍵字實(shí)現(xiàn),若要調(diào)用父類特定的構(gòu)造方法,則用super里面的參數(shù)確定,super()寫在子類的構(gòu)造函數(shù)中。,如super(name, age, sex, salary); 表示調(diào)用父類的public Person(String name, int age, String sex, Double salary)構(gòu)造方法。特別注意,如果父類中有構(gòu)造方法,則子類必須實(shí)現(xiàn)其構(gòu)造方法,若父類沒有構(gòu)造方法,子類可以定義構(gòu)造方法也可不定義。
代碼演示:

//父類
public class Person {
     private  String name;
     private int age;
     private  String sex;
     private  Double salary;
     public Person(String name, int age, String sex,  Double salary) {
        super();
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.salary = salary;
    }
    public String getName(){
        return name;
    }
    public String setName(String name){
        return this.name=name;
    }
    public int getAge(){
        return age;
    }
    public int setAge(int age){
        return this.age=age;
    }
    public String getSex(){
        return sex;
    }
    public String setSex(String sex){
        return this.sex=sex;
    }
    public  Double getSalary(){
        return salary;
    }
    public Double setSalary(Double salary){
        return this.salary=salary;
    }
}

//子類
public class Student extends Person {
    private String school;
    public Student(String name, int age, String sex, Double salary) {
            super(name, age, sex, salary);          
        }
    public String getSchool(){
        return school;
    }
    public void setSchool(String school){
        this.school=school;
    }
    public static void main(String[] args) {
        Student p1=new Student("張三",20,"男",10000.98);
        Student p2=new Student("李四",18,"女",8001.98);
        System.out.println(p1.getName()+"的年齡是"+p1.getAge()+","+"性別是"+p1.getSex()+","+"工資是"+p1.getSalary());
        System.out.println();
        System.out.println(p2.getName()+"的年齡是"+p2.getAge()+","+"性別是"+p2.getSex()+","+"工資是"+p2.getSalary());
        p1.setName("王好");
        p1.setAge(90);
        p1.setSex("女");
        p1.setSalary(4025.90);
        System.out.println();
        System.out.println("姓名:"+p1.getName()+"  年齡:"+p1.getAge()+"  性別:"+p1.getSex()+"  工資:"+p1.getSalary());
    }
}

繼承小結(jié):

  1. 如果一個(gè)類中沒有顯示extends任何類,則默認(rèn)繼承Object類。
  2. Java只支持單繼承,不支持多繼承。若要實(shí)現(xiàn)多繼承,可以由類B繼承類A,類C繼承類B。
  3. 子類只繼承父類的成員變量和成員方法,不繼承父類的構(gòu)造方法,若要繼承父類的構(gòu)造方法,可在子類的構(gòu)造方法中使用super構(gòu)造方法。
  4. 繼承的成員只能為非private的變量和方法,如果父類的方法為private,子類中同名,同參,同返回值類型方法相當(dāng)于定義了一個(gè)新方法,與父類沒有任何關(guān)系。
多態(tài):

同名但有不同的具體實(shí)現(xiàn)的多個(gè)方法同時(shí)存在于一個(gè)類中。多態(tài)的體現(xiàn)方式:方法重載和方法重寫。

方法重寫:發(fā)生在父類與子類中。子類與父類中方法名,參數(shù)類型及個(gè)數(shù),返回值都相同,只有方法體不同,叫做方法重寫。方法重寫需注意一下幾點(diǎn):
  1. 如果在子類中想調(diào)用父類中那個(gè)被重寫的方法,可以使用super.方法名(參數(shù)列表)。
  2. 重寫方法時(shí),被重寫的方法訪問權(quán)限不能比父類低,訪問權(quán)限由高到低一次為:public,protected,default,private。
    例如:
//父類
 public void Run(){
        System.out.println("歡迎來(lái)到簡(jiǎn)書!");
    }
//子類
 public void Run(){
        System.out.println("你好,晚安");
    }
方法重載:發(fā)生在同一個(gè)類中,同一個(gè)類中有多個(gè)方法名相同,返回值類型相同,但是參數(shù)類型和個(gè)數(shù)不同的方法就是方法重載。

例如:

//方法重載發(fā)生在同一個(gè)類中
public void Run( String n){
        System.out.println("歡迎來(lái)到簡(jiǎn)書!"+n);
    }
public void Run( int m){
        System.out.println("你好,晚安"+m);
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容