⑴ java中面向對象的三大特徵是什麼
面向對象三大特性
繼承:一般類只能單繼承,內部類實現多繼承,介面可以多繼承
封裝:訪問許可權控制public > protected > 包 > private 內部類也是一種封裝
多態:編譯時多態,體現在向上轉型和向下轉型,通過引用類型判斷調用哪個方法(靜態分派)。
運行時多態,體現在同名函數通過不同參數實現多種方法(動態分派)。
希望對您有所幫助!~
⑵ JAVA中什麼是繼承
繼承在本職上是特殊一般的關系,即常說的is-a關系。子類繼承父類,表明子類是一種特殊的父類,並且具有父類所不具有的 一些屬性或方法。
1.Java繼承的語法格式:
Java繼承的關鍵字是:extends
public class 子類名 extends 父類名{...}
如: public class UNStudent extends Student {...} 註:1.子類又稱超類,拓展類 ;父類又稱基類。
2.Java中類的繼承只能是單繼承(單根繼承),即一個類只能繼承一個父類,但是一個類可以由多個類來繼承它。
3.Java會給每一個沒有設置父類的類,自動添加一個父類就是Object 。
(2)java面向對象繼承擴展閱讀:
一、子類繼承父類的結果
1.子類繼承父類後,繼承到了父類所有的屬性和方法。註:是所有。
2.子類可調用的方法也要看情況而定:
子類和父類在同一個包下時 「子類和子類的對象」可以調用父類的默認的,受保護的,公有的屬性以及方法。
子類和父類在不同的包下時,在子類中可以調用受保護的,公有的屬性以及方法,而子類的對象可以調用受保護的,公有的屬性以及方法。
二、方法的重寫
1.當子類和父類都有某種方法,而子類的方法更加要求細致,或者實現功能不同,就需要方法的重寫。
2.重寫條件
①必須要存在繼承關系;只有繼承之間的關系才能有方法的重寫
②方法的返回值類型,方法名,參數個數,參數類型,參數順序,必須要完全一致;
如:父類中方法 public void play (int n ; String s){方法體1...}
重寫後的子類方法public void play(int n ; String s){方法體2...}
3.子類重寫方法時的訪問修飾符可以大於或者等於父類方法的訪問修飾符。
4.重寫後的方法會被優先調用。
三、自動轉型
自動轉型的實現要求有繼承關系
格式如下:父類名 對象名 = new 子類構造方法;
如:Student stu = new UNStudent;
而強制轉型格式如下:子類名 對象名 = (子類名)父類對象名
如:UNStudent un = (Student)stu;
自動轉型可以拓寬方法的作用訪問域
在使用自動轉型後,子類自己定義的方法是不能在自動轉型後執行;
原因是因為Java的編譯機制,它會優先判斷父類中是否存在該方法,如果存在則通過編譯,如果不存在則報錯。
第二種自動轉型:轉型後只需要不同類的不同對象調用想吐的方法,很方便!
/**訪問修飾符 返回值數據類型 方法名(父類類型 參數名,...){
調用方法。
}
父類名 對象名 = new 子類名;
子類名 對象名 = new 子類名;
方法名(對象名);
*/
比如拿到駕駛證為A2的人,可以駕駛重型貨車,當然也可以駕駛大型貨車,中型貨車,小型貨車,小客車,小轎車,摩托車... 可以選擇第二種自動轉型的方法,便於調用同一個方法。
自動轉型好處:1.減少冗餘代碼;2.在方法設置參數時,擴大訪問范圍。
四、多態
多態是由方法重載,繼承,方法重寫,自動轉型等技術的組合。
五、為什麼需要繼承?
1.提高代碼的重用性。
2.提高程序的擴展性。
JAVA繼承總結
⑶ 闈㈠悜瀵硅薄鐨勪笁澶х壒寰佸湪java涓鐨勪綋鐜幫紵
涓銆佸皝瑁
棣栧厛錛屽睘鎬ц兘澶熸弿榪頒簨鐗╃殑鐗瑰緛錛屾柟娉曡兘澶熸弿榪頒簨鐗╃殑鍔ㄤ綔銆傚皝瑁呭氨鏄鎶婂悓涓綾諱簨鐗╃殑鍏辨э紙鍖呮嫭灞炴у拰鏂規硶錛夊綊鍒板悓涓綾諱腑錛屾柟渚誇嬌鐢ㄣ
灝佽咃細灝佽呬篃縐頒俊鎮闅愯棌錛屾槸鎸囧埄鐢ㄦ娊璞℃暟鎹綾誨瀷鎶婃暟鎹鍜屽熀浜庢暟鎹鐨勬搷浣滃皝瑁呰搗鏉ワ紝浣垮叾鎴愪負涓涓涓嶅彲鍒嗗壊鐨勬暣浣擄紝鏁版嵁闅愯棌鍦ㄦ娊璞℃暟鎹鍐呴儴錛屽敖鍙鑳界殑闅愯棌鏁版嵁緇嗚妭錛屽彧淇濈暀涓浜涙帴鍙d嬌鍏朵笌澶栫晫鍙戠敓鑱旂郴銆備篃灝辨槸璇寸敤鎴鋒棤闇鐭ラ亾鍐呴儴鐨勬暟鎹鍜屾柟娉曠殑鍏蜂綋瀹炵幇緇嗚妭錛屽彧闇鏍規嵁鐣欏湪澶栭儴鐨勬帴鍙h繘琛屾搷浣滃氨琛屻
涓轟簡瀹炵幇鑹濂界殑灝佽咃紝鎴戜滑閫氬父灝嗙被鐨勬垚鍛樺彉閲忓0鏄庝負private錛屽湪閫氳繃public鏂規硶鏉ュ硅繖涓鍙橀噺鏉ヨ塊棶銆傚逛竴涓鍙橀噺鐨勬搷浣滐紝涓鑸鏈夎誨彇鍜岃祴鍊2涓鎿嶄綔錛岋紝鎴戜滑鍒嗗埆瀹氫箟2涓鏂規硶鏉ュ疄鐜拌繖2涓鎿嶄綔錛屼竴涓鏄痝etXX錛圶X琛ㄧず瑕佽塊棶鐨勬垚鍛樺彉閲忕殑鍚嶅瓧錛夌敤鏉ヨ誨彇榪欎釜鎴愬憳鍙橀噺錛屽彟涓涓鏄痵etXX錛堬級鐢ㄦ潵瀵硅繖涓鍙橀噺璧嬪箋
浜屻佺戶鎵
1. Java緇ф壙
Java緇ф壙鏄闈㈠悜瀵硅薄鐨勬渶鏄捐憲鐨勪竴涓鐗瑰緛銆傜戶鎵挎槸浠庡凡鏈夌殑綾諱腑媧劇敓鍑烘柊鐨勭被錛屾柊鐨勭被鑳藉惛鏀跺凡鏈夌被鐨勬暟鎹灞炴у拰琛屼負錛屽苟鑳芥墿灞曟柊鐨勮兘鍔涖侸AVA涓嶆敮鎸佸氱戶鎵匡紝鍗曠戶鎵誇嬌JAVA鐨勭戶鎵垮叧緋誨緢綆鍗曪紝涓涓綾誨彧鑳芥湁涓涓鐖剁被錛屾槗浜庣$悊紼嬪簭錛岀埗綾繪槸瀛愮被鐨勪竴鑸鍖栵紝瀛愮被鏄鐖剁被鐨勭壒鍖栵紙鍏蜂綋鍖)
緇ф壙鎵琛ㄨ揪鐨勫氨鏄涓縐嶅硅薄綾諱箣闂寸殑鐩鎬氦鍏崇郴錛屽畠浣垮緱鏌愮被瀵硅薄鍙浠ョ戶鎵垮彟澶栦竴綾誨硅薄鐨勬暟鎹鎴愬憳鍜屾垚鍛樻柟娉曘傝嫢綾籅緇ф壙綾籄錛屽垯灞炰簬B鐨勫硅薄渚垮叿鏈夌被A鐨勫叏閮ㄦ垨閮ㄥ垎鎬ц川(鏁版嵁灞炴)鍜屽姛鑳(鎿嶄綔)錛屾垜浠縐拌緇ф壙鐨勭被A涓哄熀綾匯佺埗綾繪垨瓚呯被錛岃岀О緇ф壙綾籅涓篈鐨勬淳鐢熺被鎴栧瓙綾匯
緇ф壙閬垮厤浜嗗逛竴鑸綾誨拰鐗規畩綾諱箣闂村叡鍚岀壒寰佽繘琛岀殑閲嶅嶆弿榪般傚悓鏃訛紝閫氳繃緇ф壙鍙浠ユ竻鏅板湴琛ㄨ揪姣忎竴欏瑰叡鍚岀壒寰佹墍閫傚簲鐨勬傚康鑼冨洿鈥斺斿湪涓鑸綾諱腑瀹氫箟鐨勫睘鎬у拰鎿嶄綔閫傚簲浜庤繖涓綾繪湰韜浠ュ強瀹冧互涓嬬殑姣忎竴灞傜壒孌婄被鐨勫叏閮ㄥ硅薄銆傝繍鐢ㄧ戶鎵垮師鍒欎嬌寰楃郴緇熸ā鍨嬫瘮杈冪畝緇冧篃姣旇緝娓呮櫚銆
涓夈佸氭
鏂規硶鐨勯噸鍐欍侀噸杞戒笌鍔ㄦ佽繛鎺ユ瀯鎴愬氭佹э紱 Java涔嬫墍浠ュ紩鍏ュ氭佺殑姒傚康錛屽師鍥犱箣涓鏄瀹冨湪綾葷殑緇ф壙闂棰樹笂鍜孋++涓嶅悓錛屽悗鑰呭厑璁稿氱戶鎵匡紝榪欑『瀹炵粰鍏跺甫鏉ョ殑闈炲父寮哄ぇ鐨勫姛鑳斤紝浣嗘槸澶嶆潅鐨勭戶鎵垮叧緋諱篃緇機++寮鍙戣呭甫鏉ヤ簡鏇村ぇ鐨勯夯鐑︺
涓轟簡瑙勯伩椋庨櫓錛孞ava鍙鍏佽稿崟緇ф壙錛屾淳鐢熺被涓庡熀綾婚棿鏈塈S-A鐨勫叧緋伙紙鍗斥滅尗鈥漣s a 鈥滃姩鐗┾濓級銆傝繖鏍峰仛鉶界劧淇濊瘉浜嗙戶鎵垮叧緋葷殑綆鍗曟槑浜嗭紝浣嗘槸鍔垮繀鍦ㄥ姛鑳戒笂鏈夊緢澶х殑闄愬埗錛屾墍浠ワ紝Java寮曞叆浜嗗氭佹х殑姒傚康浠ュ譏琛ヨ繖鐐圭殑涓嶈凍錛屾ゅ栵紝鎶借薄綾誨拰鎺ュ彛涔熸槸瑙e喅鍗曠戶鎵胯勫畾闄愬埗鐨勯噸瑕佹墜孌點傚悓鏃訛紝澶氭佷篃鏄闈㈠悜瀵硅薄緙栫▼鐨勭簿楂撴墍鍦ㄣ
瑕佺悊瑙e氭佹э紝棣栧厛瑕佺煡閬撲粈涔堟槸鈥滃悜涓婅漿鍨嬧濄
鎴戝畾涔変簡涓涓瀛愮被Cat錛屽畠緇ф壙浜咥nimal綾伙紝閭d箞鍚庤呭氨鏄鍓嶈呯殑鐖剁被銆傛垜鍙浠ラ氳繃
Cat c = new Cat(); 渚嬪寲涓涓狢at鐨勫硅薄錛岃繖涓涓嶉毦鐞嗚В銆
浣嗗綋鎴戣繖鏍峰畾涔夋椂錛 Animal a = new Cat();
鐖剁被寮曠敤鍙鑳借皟鐢ㄧ埗綾諱腑瀛樺湪鐨勬柟娉曞拰灞炴э紝涓嶈兘璋冪敤瀛愮被鐨勬墿灞曢儴鍒嗭紱鍥犱負鐖剁被寮曠敤鎸囧悜鐨勬槸鍫嗕腑瀛愮被瀵硅薄緇ф壙鐨勭埗綾伙紱錛堜絾鏄濡傛灉寮哄埗鎶婅秴綾昏漿鎹㈡垚瀛愮被鐨勮瘽錛屽氨鍙浠ヨ皟鐢ㄥ瓙綾諱腑鏂版坊鍔犺岃秴綾繪病鏈夌殑鏂規硶浜嗐傦級
鍚屾椂錛岀埗綾諱腑鐨勪竴涓鏂規硶鍙鏈夊湪鐖剁被涓瀹氫箟鑰屽湪瀛愮被涓娌℃湁閲嶅啓鐨勬儏鍐典笅錛屾墠鍙浠ヨ鐖剁被綾誨瀷鐨勫紩鐢ㄨ皟鐢錛