抽象類和抽象方法常用知識點:
(1)抽象類作為被繼承類,子類必須實現(xiàn)抽象類中的所有抽象方法,除非子類也為抽象類。
也就是說,如果子類也為抽象類,可以不實現(xiàn)父類中的抽象方法。但是,如果有一個非抽象類
繼承于抽象子類,需要實現(xiàn)抽象子類,抽象子類的抽象父類的所有抽象方法,新帳舊賬一起算。
(2)抽象類不能用final進行修飾。
(3)抽象類不能被實例化,也就是說你用的時候不能通過new關(guān)鍵字創(chuàng)建。
(4)抽象類中可以包含抽象方法和非抽象方法,抽象方法沒有方法體,也就是沒有具體實現(xiàn),
只是定義了有什么功能,但是非抽象方法含有方法體。
eg:
抽象父類Person:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
package com.lanhuigu.java; /** * 抽象類:不能用final修飾, * 可以包含抽象方法和非抽象方法, * 抽象方法沒有方法體,只是定義功能,沒有實現(xiàn); * 非抽象方法為正常的方法。 */ /* * abstract methods */ public abstract String eat(); public abstract String sleep(); /* * non-abstract methods */ public String sport() { return "生命在于運動" ; } } |
非抽象子類Teacher:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package com.lanhuigu.java; /** * 繼承于抽象類person,必須實現(xiàn)父類中的所有抽象方法 */ public class Teacher extends Person { @Override public String eat() { // TODO Auto-generated method stub return "老師吃飯" ; } @Override public String sleep() { // TODO Auto-generated method stub return "老師睡覺" ; } } |
非抽象子類Student:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package com.lanhuigu.java; /** * 繼承于抽象類person,必須實現(xiàn)父類中的所有抽象方法 */ public class Student extends Person { @Override public String eat() { // TODO Auto-generated method stub return "學生吃飯" ; } @Override public String sleep() { // TODO Auto-generated method stub return "學生睡覺" ; } } |
抽象子類OthersPerson:
1
2
3
4
5
6
7
|
package com.lanhuigu.java; /** * 抽象類繼承自抽象類,可以不用實現(xiàn)其父類的抽象方法 */ public abstract class OthersPerson extends Person { public abstract String call(); } |
非抽象子類ExtendsOthersPerson繼承于抽象子類OthersPerson:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
package com.lanhuigu.java; /** * 必須實現(xiàn)抽象父類OthersPerson,以及OthersPerson父類Person中 * 的所有抽象方法,新帳舊賬一起算。 */ public class ExtendsOthersPerson extends OthersPerson { @Override public String sleep() { // TODO Auto-generated method stub return "睡覺" ; } @Override public String eat() { // TODO Auto-generated method stub return "吃飯" ; } @Override public String call() { // TODO Auto-generated method stub return "打電話" ; } } |
測試代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package com.lanhuigu.java; public class TestAbstract { public static void main(String[] args) { Teacher teacher = new Teacher(); Student student = new Student(); //OthersPerson othersPerson = new OthersPerson();//報錯,抽象類不能被實例化 System.out.println(teacher.eat()); System.out.println(teacher.sleep()); System.out.println(teacher.sport()); // 繼承父類非抽象方法 System.out.println( "==============" ); System.out.println(student.eat()); System.out.println(student.sleep()); System.out.println(student.sport()); // 繼承父類非抽象方法 } } |
控制臺輸出:
老師吃飯
老師睡覺
生命在于運動
==============
學生吃飯
學生睡覺
生命在于運動
總結(jié)
以上就是本文關(guān)于java編程abstract類和方法詳解的全部內(nèi)容,希望對大家有所幫助。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
原文鏈接:http://blog.csdn.net/yhl_jxy/article/details/53258801