1. 程式人生 > >java中的抽象類和抽象方法

java中的抽象類和抽象方法

抽象方法:在類中沒有方法體的方法,就是抽象方法。
抽象類:含有抽象方法的類就叫抽象類。

抽象類中的抽象方法必須被實現!
如果一個子類沒有實現父類中的抽象方法,則子類也成為了一個抽象類!
抽象類中的普通方法,可以不必實現。

1 用abstract關鍵字來修飾一個類時,這個類叫做抽象類;用abstract來修飾一個方法時,該方法叫做抽象方法。例如 :
abstract class Animal { //用abstract來定義一個Animal為抽象類
}

public abstract void enjoy(); //用abstract來定義一個抽象方法"enjoy"

2 含有抽象方法的類必須被宣告為抽象類,抽象類必須被繼承,抽象方法必須被重寫。

3 抽象類不能被例項化。

4 抽象方法只需宣告,而不需實現某些功能。如:
public abstract void enjoy(); 
上面的這個抽象方法不需要實現功能,而一般的方法 :
public void enjoy() {
System.out.print("叫聲"); //有必要實現某些功能
}

5. final 不能修辭抽象類,也不能修辭抽象方法,因為抽象類必須被繼承,抽象方法必須被重寫。而final修辭後不能繼承,不能重寫。

6.static:如果static可以修飾抽象方法,那麼連物件都省了,直接類名呼叫就可以了。

7.抽象類的作用:在不同的類中需要不同的實現、那麼這個時候就需要用到抽象類的抽象出這個抽象方法,當繼承了這個抽象類的子類,就可以不同實現(這點和介面很像)。抽象類的另一個作用是各個子類都有相同的方法行為的時候,就可以在抽象類中統一實現這個方法。這個就是上面說的抽象類中的普通方法的作用了。這樣在各個子類中就不需要再實現了,起到了抽象的作用。

 :多型程式,沒抽象類的
class Person {
public void f() {
System.out.println("父類");
}
}

class Students extends Person {
public void f() {
System.out.println("學生類");
}
}
class Teacher extends Person {
public void f() {
System.out.println("教師類");
}
}
public class Test3 {
public static void main(String[] args) {
Person s = new Students();
Person t = new Teacher();
s.f();
t.f();
}
}

抽象類的多型程式:
abstract class Person {
public abstract void f();
}

class Students extends Person {
public void f() {
System.out.println("學生類");
}
}
class Teacher extends Person {
public void f() {
System.out.println("教師類");
}
}
public class Test3 {
public static void main(String[] args) {
Person s = new Students();
Person t = new Teacher();
s.f();
t.f();
}
}
--------------------- 


轉載於:https://blog.csdn.net/mal327/article/details/7332110?utm_source=copy