星期三的收獲
1、抽象類:如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。(抽象類用abstract修飾)
①抽象類的語法為:訪問權限 + abstract class 類名;
②抽象類不能被實例化,但可以有構造函數;
③抽象類只能用作基類,表示一種繼承關系。(抽象類的派生子類應該提供對其所有抽象方法的具體實現;如果抽象類的派生子類沒有實現其中的所有抽象方法,那麽該派生子類仍然是抽象類
)
2、抽象方法:在類中沒有方法體的方法,就是抽象方法(抽象方法的語法:訪問權限 abstract 返回值類型 方法名稱(參數列表);)
3、抽象的作用:利用抽象的概念,能夠在開發項目中創建擴展性很好的架構,優化程序。
4、object類:只提到了object類是所有類的父類,位於Java.lang包中。
5、object類中常用的方法:①toString方法:可以將任何一個對象轉換成字符串返回;
②equals的方法:是用來作比較的(比較的是兩個引用的虛地址)
③equals和==的比較:equals比較的是對象的虛地址,而==比較的是內存的虛地址
6、多態性:JAVA中多態的具體體現是方法重載、方法覆蓋、多態參數。
7、多態的參數:方法參數具有多態性,可以提高代碼的擴展性。
8、多態環境下的對象造型:①向上造型(提高程序的擴展性)
②向下造型(為了使用子類中的特有方法)
9、多態環境下對屬性和方法的調用
:①多態環境下對成員方法的調用(編譯看左邊,運行看右邊)
②多態環境下對靜態成員方法的調用(編譯運行都看左邊)
③多態環境下對成員變量的調用(編譯運行都看左邊)
10、instanceof 操作符
:是用來在運行時指出對象是否是特定類的一個實例(語法形式為 對象名稱 instanceof 類型)
11、運行期類型與編譯期類型:①編譯期類型和運行期類型相同
②當有繼承關系時,可能發生編譯期類型和運行期類型不同的情況,即編譯期類型是父類類型,運行期類型是子類類型。
12、接口的基本語法:①Java接口是一系列方法的聲明,是一些抽象的集合
(接口就是特殊的抽象類)
②接口的基本格式:修飾符 interface 接口名
③接口中沒有變量,只有public static final 修飾的靜態常量
13、接口繼承接口的原則:①Java接口可以繼承多個接口
②接口繼承接口依然使用關鍵字extends
14接口繼承與類繼承的區別:①Java類的繼承是單一繼承,Java接口的繼承是多重繼承
②java類對屬性沒有限制,而接口是靜態常量
③JAVA類的構造方法可有可無,接口沒有構造方法
④JAVA類可以有具體方法,接口必須是抽象方法
15、類實現接口:接口定義的是多個類都要實現的操作,即“what to do”。類可以實現接口,從而覆蓋接口中的方法,實現“how to do”
1、下午的練習
package com.chainsoft.lianxi.AM; public class Xiaolianxi { public static void main(String[] args) { // TODO Auto-generated method stub Dongwu cat1 = new Cat(); Dongwu animal = new Dongwu(); animal.eat(); cat1.eat(); cat1.drink(); cat1.play(); Dongwu dog1 = new Dog(); Dongwu animal1 = new Dongwu(); animal1.drink(); dog1.eat(); dog1.drink(); dog1.play(); Dongwu yu1 = new Yu(); Dongwu animal2 = new Dongwu(); animal2.play(); yu1.eat(); yu1.drink(); yu1.play(); System.out.println(cat1 instanceof Cat); if(cat1 instanceof Dog){ System.out.println("貓的孩子為了復仇,學會了遊泳,吃光所有魚"); }else{ System.out.println("貓的孩子為了復仇,去學習遊泳,結果貓的孩子沒有學會遊泳,吃不光所有魚"); } } } class Dongwu { void eat() { System.out.print("小貓出生了,3年後,小貓可以吃東西了,"); } void drink() { System.out.print("一只小狗"); } void play() { System.out.print("失落的貓走出了家門,"); } } class Cat extends Dongwu{ Cat(){ super(); } void eat() { int a = 3; System.out.print("於是貓吃了"+a+"條魚"); } void drink() { System.out.print(",然後慢慢的添水喝"); } void play() { System.out.println(",吃飽喝足推球玩,"); } } class Dog extends Dongwu { void eat(){ System.out.print("看著推球玩的小貓,跑去追貓咬,"); } void drink(){ System.out.print("打碎了玻璃,弄亂了房間,"); } void play(){ System.out.println("主人知道後,把狗栓了起來,把貓趕了出去。"); } } class Yu extends Dongwu{ void eat(){ System.out.print("看到小河裏自由自在捕食遊玩的小魚,"); } void drink(){ System.out.print("心生嫉妒於是下河去捕魚,"); } void play(){ System.out.println("結果自己淹死在了水裏。"); } }
輸出結果
2、多接口的練習
package com.chainsoft.lianxi.AM; interface IConnecionManager{ //創建一個接口1 void dial(String phoneNumber); void huangup(); } interface IDataTransfer{ //創建一個接口2 void chat(String req); void answer(String rep); } class Phone implements IConnecionManager,IDataTransfer{ //繼承兩個接口 public void chat(String req) { System.out.println(req); //實例化接口2方法1 } public void answer(String rep) { System.out.println(rep); // 實例化接口2方法2 } public void dial(String phoneNumber) { System.out.println(phoneNumber); //實例化接口1方法1 } public void huangup() { System.out.println("通話完畢!"); //實例化接口1方法2 } } public class Duojiekou { public static void main(String[] args) { // TODO Auto-generated method stub Phone phone = new Phone(); phone.chat("地瓜地瓜,我是土豆,收到請回答!"); //輸出 phone.answer("土豆土豆,我是地瓜,已經收到!"); phone.dial("1-917-8681888"); phone.huangup(); } }
輸出結果
3、多態的練習
package com.chainsoft.lianxi.AM; class USB { public String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public String load() { return"USB設備正在裝載..."; } } class UDisk extends USB { public UDisk() { setName("16G U盤"); } public String load() { return "正在裝載的是:"+getName(); } } class Umouse extends USB { public Umouse() { setName("USB接口鼠標"); } public String load() { return "正在裝載的是:"+getName(); } } class UKeyboard extends USB { public UKeyboard() { setName("USB接口鍵盤"); } public String load() { return"正在裝載的是:"+getName(); } } public class USBTest{ public static void main(String[] args) { // TODO Auto-generated method stub USB udisk = new UDisk(); System.out.println(udisk.load()); USB umouse = new Umouse(); System.out.println(umouse.load()); USB ukeyboard = new UKeyboard(); System.out.println(ukeyboard.load()); } }
輸出結果
星期三的收獲