抽象类

转帖请注明本文出自weimeig的博客(http://blog.csdn.net/weimeig/article/details/79498536),请尊重他人的辛勤劳动成果,谢谢

应朋友们反馈的JAVA基础薄弱的问题,决定出一套完整的JAVA基础教程,帮助大家复习,巩固JAVA基础,今天要讲的是抽象类。

/**
 *abstract是一个修饰符
 *可以修饰方法,类
 *1.当我们多个类存在相同的功能时,但是功能的主体不同,这时我们进行向上抽取
 *只抽取功能的定义不抽取功能的主体
 *
 * 抽象类的特点:
 * 1.抽象方法一定要在抽象类中
 * 2.抽象类和抽象方法必须要被abstract关键字修饰
 * 3.抽象的类是不能被创建对象,因为调用抽象的方法没意义
 * 4.抽象类中的方法要被使用,必须由之类重写抽象类中的方法,然后创建之类对象来调用。
 * 5.抽象类中可以定义非抽象的方法,有时我们需要此类不能被new关键字创建对象时,
 * 可以用abstract将此类变成抽象类
 * 6.子类如果只重写一部分的抽象方法,那么该子类还是一个抽象类。如果抽象类的方法
 * 要被使用,子类必须重写抽象类中的所有方法。
 * 
 * 值得注意:抽象类和普通的类没有太大的不同。
 * 1.抽象类无法通过new关键字创建对象
 * 2.抽象类里面可以有抽象的方法
 */
abstract class Animal{
	abstract void sing();
	void show(){
		System.out.println("你好");
	}
	}
class Cat extends Animal{
	void sing(){
		System.out.println("喵喵唱歌");
}
}
class Dog extends Animal{
	void sing(){
		System.out.println("汪汪唱歌");
	}
}
public class chouxianglei {
	public static void main(String[] args)
	{
		Animal a=new Dog();//Animal是抽象类不能new对象,但可以接收子类对象
		a.sing();
	}

}

我们不难发现,不同的子类继承父类后,各自有不同的重写需求,那么父类中的方法突然变得没有了意义,这时候,我们可以将父类Animal中的

void show(){

		System.out.println("你好");
	}

方法改为看不懂的抽象方法,abstract void sing();此时会报错,因为,抽象方法需要存在抽象类中,

所以,将类定义为abstract class Animal抽象类。当然,方法体中的abstract void sing()不加abstract,

编译的时候是会默认加上去的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值