黑马程序员_抽象类详解

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------


一、什么是抽象类:

抽象类:在描述事物时,没有足够的信息描述一个事物,这时该事物就是抽象事物。

例如:

描述狗,行为:吼叫。

描述狼,行为:吼叫。

发现他们之间有共性,可以进行向上抽取。

当然是抽取它们的所属共性类型:犬科。

犬科这类事物:都具备吼叫行为,但是具体怎么叫,是不确定的,是由具体的子类来明确的。

这时在描述犬科时,发现了有些功能不具体,这些不具体的功能,需要在类中标识出来,通过java中的关键字abstract(抽象)。

定义了抽象函数的类也必须被abstract关键字修饰,被abstract关键字修饰的类是抽象类。

二、抽象类特点:

1抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。

2抽象类不可以创建实例,原因:调用抽象方法没有意义。

3只有覆盖了抽象类中所有的抽象方法后,其子类才可以实例化。否则该子类还是一个抽象类。

三、细节问题:

1抽象类一定是个父类?

是的,因为不断抽取而来的。

2抽象类是否有构造函数?

有,虽然不能给自己的对象初始化,但是可以给自己的子类对象初始化。

3抽象类中是否可以不定义抽象方法。

是可以的,那这个抽象类的存在到底有什么意义呢?仅仅是不让该类创建对象。

4抽象关键字abstract不可以和哪些关键字共存?

final -- 定义为final的话,子类无法覆盖父类,因为final代表最终,不能被覆盖。

private -- 定义为私有的,子类无法访问父类,不能覆盖父类。

static -- 静态不能和抽象共存,非法组合。


四、抽象类和一般类的异同点:

1、相同点:

a、他们都是用来描述事物的

b、他们之中都可以定义属性和行为。

2、不同点:

a、一般类可以描述具体的事物,抽象类描述的事物是不具体的

b、抽象类可以多定义一个成员:抽象函数

c、一般类可以创建对象,抽象类不可以创建对象


五、抽象类在代码的具体体现:


<span style="font-size:18px;">abstract class 犬科 //extends Object
{
	abstract void 吼叫();//抽象函数。需要abstract修饰,并分号;结束
}

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

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

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


---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

详细请查看:www.itheima.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值