Java基礎九--抽象類別,java--抽象

來源:互聯網
上載者:User

Java基礎九--抽象類別,java--抽象
Java基礎九--抽象類別一、抽象類別介紹


/*
抽象類別:
抽象:籠統,模糊,看不懂!不具體。

 

特點:
1,方法只有聲明沒有實現時,該方法就是抽象方法,需要被abstract修飾。
抽象方法必須定義在抽象類別中。該類必須也被abstract修飾。
2,抽象類別不可以被執行個體化。為什嗎?因為調用抽象方法沒意義。
3,抽象類別必須有其子類覆蓋了所有的抽象方法後,該子類才可以執行個體化。
否則,這個子類還是抽象類別。


1,抽象類別中有建構函式嗎?
有,用於給子類對象進行初始化。



2,抽象類別可以不定義抽象方法嗎?
可以的。 但是很少見,目的就是不讓該類建立對象。AWT的配接器物件就是這種類。
通常這個類中的方法有方法體,但是卻沒有內容。

abstract class Demo
{
void show1()
{}

void show2()
{}
}

 

3,抽象關鍵字不可以和那些關鍵字共存?
private 不行
static不行 如果是靜態話不需要對象,而抽象類別就是需要對象的
final不行

 

4,抽象類別和一般類的異同點。
相同點:
抽象類別和一般類都是用來描述事物的,都在內部定了成員。
不同:
1,一般類有足夠的資訊描述事物。
抽象類別描述事物的資訊有可能不足。
2,一般類中不能定義抽象方法,只能定非抽象方法。
抽象類別中可定義抽象方法,同時也可以定義非抽象方法。
3,一般類可以被執行個體化。
抽象類別不可以被執行個體化。

 


5,抽象類別一定是個父類嗎?
是的。因為需要子類覆蓋其方法後才可以對子類執行個體化。

 


*/

abstract class Demo
{
abstract /*抽象*/ void show();

}

/*

class DemoA extends Demo
{
void show()
{
System.out.println("demoa show");
}
}
class DemoB extends Demo
{
void show()
{
System.out.println("demob show");
}
}
*/
abstract class 犬科
{
abstract void 吼叫();
}

class 狗 extends 犬科
{

void 吼叫()
{
System.out.println("汪汪");
}
}
class 狼 extends 犬科
{
void 吼叫()
{
System.out.println("嗷嗷");
}
}

 

class AbstractDemo
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}

 

二、抽象類別執行個體
  1 /*  2 僱員樣本:  3 需求:公司中程式員有姓名,工號,薪水,工作內容。  4 專案經理除了有姓名,工號,薪水,還有獎金,工作內容。  5 對給出需求進行資料建模。  6   7   8   9 分析: 10 在這個問題領域中,先找出涉及的對象。 11 通過名詞提煉法。 12 程式員: 13     屬性:姓名,工號,薪水、 14     行為:工作。 15 經理: 16     屬性:姓名,工號,薪水,獎金。 17     行為:工作。 18  19  20 程式員和經理不存在著直接繼承關係, 21  22 但是程式員和經理卻具有共性內容。 23 可以進行抽取。因為他們都是公司的僱員  24  25 可以將程式員和經理進行抽取.建立體系. 26      27 */ 28  29 //描述僱員。 30  31 abstract class Employee 32 { 33     private String name; 34     private String id; 35     private double pay; 36     Employee(String name,String id,double pay) 37     { 38         this.name = name; 39         this.id = id; 40         this.pay = pay; 41     } 42  43     public abstract void work(); 44      45 } 46  47  48 //描述程式員。 49 class Programmer extends Employee 50 { 51     Programmer(String name,String id,double pay) 52     { 53         super(name,id,pay); 54     } 55     public void work() 56     { 57         System.out.println("code..."); 58     } 59 } 60  61 //描述經理。  62 class Manager extends Employee 63 { 64     private int bonus; 65     Manager(String name,String id,double pay,int bonus) 66     { 67         super(name,id,pay); 68         this.bonus = bonus; 69     } 70     public void work() 71     { 72         System.out.println("manage"); 73     } 74 } 75  76  77  78  79  80  81 class  AbstractTest 82 { 83     public static void main(String[] args)  84     { 85         System.out.println("Hello World!"); 86     } 87 } 88  89  90 class Person 91 { 92     private String name; 93     private int age; 94  95     Person(String name,int age) 96     { 97         this.name = name; 98         this.age = age; 99     }100     public String getName()101     {102         return name;103     }104     public void setName(String name)105     {106         this.name = name;107     }108 }109 class Student extends Person110 {111     Student(String name,int age)112     {113         super(name,age);114     }115 116 }117 class Worker extends Person118 {119     Worker(String name,int age)120     {121         super(name,age);122     }123 124 }

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.