日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

封装 继承 多态

發(fā)布時間:2024/4/11 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 封装 继承 多态 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

封裝

  • 該露的露 該藏的藏

    • 程序設(shè)計追求"高內(nèi)聚 低耦合"

      高內(nèi)聚:就是類的內(nèi)部數(shù)據(jù)操作細(xì)節(jié)自己完成, 不允許外部干涉;

      低耦合:僅暴露少量的方法給外部使用.

  • 封裝:(數(shù)據(jù)的隱藏)

    • 通常 應(yīng)禁止直接訪問一個對象中數(shù)據(jù)的實例表示, 而應(yīng)該通過操作借口來訪問 稱為信息隱藏.
  • 屬性私有 set/get

?

package com.ntru.demo.test.OOP.Demo04;/* 封裝的意義 1. 提高程序的安全性 保護(hù)數(shù)據(jù) 2. 隱藏代碼的實現(xiàn)細(xì)節(jié) 3. 統(tǒng)一接口 4. 系統(tǒng)可維護(hù)性增加*/ public class Application {public static void main(String[] args) {Student s1 = new Student();s1.name = "秦疆";System.out.println(s1.getName());s1.setAge(-1);//不合法的System.out.println(s1.getAge());}}

?

package com.ntru.demo.test.OOP.Demo04;//類 private: 私有 public class Student {//名字public String name;//名字private int id;//學(xué)號private char sex;//性別private int age;//學(xué)號//性別//學(xué)習(xí)()//睡覺()//get 獲得這個數(shù)據(jù)public String getName(){return this.name;}//set 給這個數(shù)據(jù)設(shè)置值public void setName(String name){this.name = name;}public void getId(){this.id = id;}public char getSex(){return sex;}public int getAge(){return age;}public void setAge(int age){if(age>120 || age<0){age = 3;}this.age = age;} }

繼承

  • 繼承的本質(zhì)是對某一批類的抽象, 從而實現(xiàn)對現(xiàn)實世界更好的建模
  • extends的意思是"擴展". 子類是父類的擴展
  • JAVA中類只有單繼承 沒有多繼承
package com.ntru.demo.test.OOP.Demo05;import org.omg.CORBA.PUBLIC_MEMBER;//person /* 學(xué)生 is 人*/ public class Person {protected String name = "kuangshen";} package com.ntru.demo.test.OOP.Demo05; /* 學(xué)生 is 人*/ //子類繼承父類 就會擁有父類的全部方法 public class Student extends Person {//ctur + Hprivate String name = "qinjiang";public void test(String name){System.out.println(name);//秦疆System.out.println(this.name);//qinjiangSystem.out.println(super.name);//kuangsheng} }
  • 繼承是類和類之間的一種關(guān)系. 除此之外, 類和類之間的關(guān)系還有依賴、組合、聚合等.

  • 繼承關(guān)系的兩個類, 一個為子類(派生類), 一個為父類(基類). 子類繼承父類, 使用換剪字extends來表示.

  • 子類和父類之間 從意義上講應(yīng)該具有"is a"的關(guān)系

  • object類

  • super

    1. super調(diào)用父類的構(gòu)造方法, 必須在構(gòu)造方法的第一個2. super必須只出現(xiàn)在子類的方法或者構(gòu)造方法中3. super和this不能同時調(diào)用構(gòu)造方法
  • this

  • 代表的對象不同

? this: 本身調(diào)用這個對象

super: 代表父類對象的應(yīng)用

前提

? this: 沒有繼承也可以使用

super: 只能在繼承條件下才可以使用

構(gòu)造

this(); 本類的構(gòu)造

super(); 父類的構(gòu)造

  • 方法重寫
重寫: 需要有繼承關(guān)系, 子類重寫父類的方法1. 方法名必須相同2. 參數(shù)列表必須相同3. 修飾符 范圍可擴大 public proteced Default private4. 拋出的異常 范圍 可以被縮小 不能被擴大ClassNotFoundException--> Exception重寫: 子類的方法必須和父類必須一致, 方法體不同為什么需要重寫1.父類的功能, 子類不一定需要, 或者不一定滿足!Alt + Insert: override;

多態(tài)(動態(tài)編譯 可擴展性)

  • 即同一方法可以根據(jù)發(fā)送對象的不同而采用多種不同的行為方式
  • 一個對象的實際類型是確定的, 但可以指向?qū)ο蟮囊妙愋陀泻芏?/li>
  • 多態(tài)存在的條件
    • 有繼承關(guān)系
    • 子類重寫父類方法
    • 父類引用指向子類對象
  • 多態(tài)是方法的多態(tài) 屬性沒有多態(tài)性
  • instance of類型轉(zhuǎn)換
package com.ntru.demo.test.OOP.Demo06;public class Person {public void run(){System.out.println("run");} }/* 多態(tài)注意事項:1. 多態(tài)是方法的多態(tài) 屬性沒有多態(tài) 2. 父類和子類 有聯(lián)系 類型轉(zhuǎn)換異常! ClassCastException 3. 存在條件 繼承關(guān)系 方法需要重寫 父類的引用指向子類對象1. static 方法 屬于類 不屬于實例2. final 常量3. private 方法*/ package com.ntru.demo.test.OOP.Demo06;public class Student extends Person{@Overridepublic void run() {System.out.println("son");}public void eat(){System.out.println("eat");} } package com.ntru.demo.test.OOP;import com.ntru.demo.test.OOP.Demo06.Person; import com.ntru.demo.test.OOP.Demo06.Student;public class Application {public static void main(String[] args) {//一個對象的實際類型是確定的//Student student = new Student();//Person person = new Person();//可以指向的引用類型不確定//學(xué)生的多種狀態(tài)/*Student 能調(diào)用的方法都是自己的或者父類的Person 父類 可以指向子類, 但是不能調(diào)用子類獨有的方法*/Student s1 = new Student();Person s2 = new Student();//父類的引用指向子類的類型Object s3 = new Student();//父類的引用指向子類的類型//對象能執(zhí)行哪些方法 主要看對象左邊的類型 和右邊關(guān)系不大s2.run();//子類重寫了父類的方法 執(zhí)行子類的方法//無法運行 s2.eat();//強制轉(zhuǎn)轉(zhuǎn)((Student)s2).eat();//子類重寫了父類的方法 執(zhí)行子類的方法s1.run();} }

總結(jié)

以上是生活随笔為你收集整理的封装 继承 多态的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。