?????????????????????????????????????????????????????????????????????? 19/4/15面向?qū)ο蟾呒?jí)
1.關(guān)鍵字:
??????? this的作用:
????????????????? this.屬性名???
????????????????? this.方法名()
????????????????? this.調(diào)用構(gòu)造器
??????? static的作用:
???????????????? 變量???????? public static final int a = 10
???????????????? 方法
???????????????? 靜態(tài)代碼塊
????? final的作用:
????????????????? 類(不可以被繼承)
????????????????? 方法
????????????????? 靜態(tài)代碼塊
?? ? abstract的作用:
???????????????? 抽象的,只有聲明沒有實(shí)現(xiàn)久免,如果一個(gè)類中有一個(gè)抽象方法旋恼,那么這個(gè)類必須定義為抽象類,有子類去實(shí)現(xiàn)
???? extends的作用:
????????????????? 子類對(duì)父類的繼承
2.繼承
規(guī)則:
????????? Java中支持單繼承,就是說每個(gè)類只有一個(gè)父類歇终,不允許有多重繼承
????????? 一個(gè)父類可以有多個(gè)子類
?????????? 子類繼承父類所有的屬性和方法帆喇,但不繼承父類的構(gòu)造方法
注意:
??????????? 所有類默認(rèn)繼承Object
??????????? 繼承是Java中科重用的一種體現(xiàn)
語法 以及 重寫(class B中對(duì)class A中的 a 重寫):
class A{
?????? public void a(){
?????????????? System.out.println("a");
??????? }
}
class B extends A{
?????? public void a(){
?????????????? System.out.println("b");
?????? }
}
重載
class C{
????????? public void c(){}
????????? public void c(int a)P{}
}
3.多態(tài):
作用:繼承多態(tài)可以優(yōu)化我們程序設(shè)計(jì),但是不能提高程序的效率油啤。繼承多態(tài)后期多用于查看api文檔
滿足條件:要有繼承關(guān)系???? 方法重寫??? 父類的引用指向子類的對(duì)象?????? 例如:A x = new B()
語法:
//關(guān)于喜歡酒的一個(gè)多態(tài)描述
class Wine {
String s = "劍南春";
public void fun() {
???????? System.out.println("父類中wine的方法fun..........");
??????? }
}
class JNC extends Wine {
// 子類劍南春重載父類wine
// 重寫父類中的fun1a
String s = "女兒紅";
public void fun() {
???????? System.out.println("JNC子類的方法 fun.............");
?????? }
}
public class Ceshi {
?????????? public static void main(String[] args){
??????????????????? Wine wine = new JNC(); //父類中的引用? 指向? 子類中的對(duì)象
???????????????????? wine.fun();
?????????????????????? System.out.println(wine.s);
??????? }
}
4.abstract 抽象類
?????? 如果一個(gè)類中有一個(gè)抽象方法典徘,那么這個(gè)類一定是抽象類(方法只有聲明,沒有實(shí)現(xiàn))益咬,子類負(fù)責(zé)實(shí)現(xiàn)抽象該方法
?????? 當(dāng)父類的某些方法不確定時(shí)逮诲,可以用abstract關(guān)鍵字來修飾該方法[抽象方法],用abstract來修飾該類[抽象類]。
我們都知道汛骂,父類是將子類所共同擁有的屬性和方法進(jìn)行抽取罕模,這些屬性和方法中,有的是已經(jīng)明確實(shí)現(xiàn)了的帘瞭,有的還無法確定淑掌,那么我們就可以將其定義成抽象,在后日子類進(jìn)行重用蝶念,進(jìn)行具體化抛腕。這樣,抽象類也就誕生了媒殉。
例如担敌,定義了“動(dòng)物”父類,其中“動(dòng)物名稱”和“動(dòng)物年齡”屬性已經(jīng)明確了廷蓉,但是“動(dòng)物叫”的方法沒有明確全封,此時(shí)就可以將“動(dòng)物叫”定義為抽象方法。
所以桃犬,抽象類是為了把相同的但不確定的東西的提取出來刹悴,為了以后的重用。定義成抽象類的目的攒暇,就是為了在子類中實(shí)現(xiàn)抽象類土匀。
語法:
package javastudy;publicclass AbstractDemo1 {
? ? publicstaticvoid main(String[] args) {
? ? ? ?? ? }
}// 這就是一個(gè)抽象類abstractclass Animal {
? ? String name;
? ? int age;
? ? // 動(dòng)物會(huì)叫
???? public abstract void cry(){
?? // 不確定動(dòng)物怎么叫的。定義成抽象方法形用,來解決父類方法的不確定性就轧。抽象方法在父類中不能實(shí)現(xiàn),所以沒有函數(shù)體田度。但在后續(xù)在繼承時(shí)妒御,要具體實(shí)現(xiàn)此方法。
}
??? // 抽象類可以被繼承
?? // 當(dāng)繼承的父類是抽象類時(shí)镇饺,需要將抽象類中的所有抽象方法全部實(shí)現(xiàn)携丁。
?? class cat extends Animal {
? ? // 實(shí)現(xiàn)父類的cry抽象方法
??? public void cry() {
? ? ? ? System.out.println("貓叫:");
? ? }
注意:
???? 1.用abstract修飾的類,即抽象類兰怠;用abstract修飾的方法梦鉴,即抽象方法。
???? 2.抽象方法不能有方法主體揭保。格式如下:
???????????????????? abstrac tvoid xxx();
???? 3.抽象類不能被實(shí)例化肥橙。因?yàn)槌橄箢愔蟹椒ㄎ淳唧w化,這是一種不完整的類秸侣,所以直接實(shí)例化也就沒有意義了存筏。
???? 4.抽象類中不一定要包含abstrace方法宠互。也就是了,抽象中可以沒有abstract方法椭坚。
???? 5.一旦類中包含了abstract方法予跌,那類該類必須聲明為abstract類。
抽象類不能被實(shí)例化善茎。因?yàn)槌橄箢愔蟹椒ㄎ淳唧w化券册,這是一種不完整的類,所以直接實(shí)例化也就沒有意義了垂涯。
抽象類不能被實(shí)例化烁焙。因?yàn)槌橄箢愔蟹椒ㄎ淳唧w化,這是一種不完整的類耕赘,所以直接實(shí)例化也就沒有意義了骄蝇。
抽象類中不一定要包含abstrace方法。也就是了操骡,抽象中可以沒有abstract方法九火。