Java——为什么要有抽象类的概念?

本文通过具体的Java代码示例,介绍了如何使用抽象类和抽象方法解决父类方法不确定的问题。详细阐述了抽象类的特点及使用注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先你要看到普通类的缺点:

假设我有一个父类:

class Animal            //创建一个动物类
{
	String name;
	int age;
	public void cry()    //动物会叫
	{
		System.out.println("不知道怎么叫!");    //可是我们不知道它怎么叫
	}
}

假如我下面有一个猫类和狗类继承了这个动物类:

class Dog extends Animal    //狗继承了动物类
{
	@Override
	public void cry()    //狗类重写了方法
	{
		System.out.println("汪!汪!");
	}
}
class Cat extends Animal    //猫继承了动物类
{
	@Override
	public void cry()    //猫类重写了方法
	{
		System.out.println("喵!喵!");
	}
}

然后你会发现,猫和狗类虽然继承并重写了父类方法,但是父类方法的方法体一点用都没有!!!

结果:这就是  父类方法的不确定性 。所以用抽象类来把父类的设计的抽象,以至于它都没有任何具体的事例

当父类的方法不能够确定时,可以用abstract关键字修饰该方法,被abstarct修饰的方法是抽象方法,被abstract修饰的类叫抽象类。

所以上面的程序可以改为:

abstract class Animal        //抽象类
{
	String name;
	int age;
	abstract public void cry();    //抽象方法,不需要实现这个方法

}
class Dog extends Animal
{
	@Override
	public void cry()
	{
		System.out.println("汪!汪!");
	}
}
class Cat extends Animal
{
	@Override
	public void cry()
	{
		System.out.println("喵!喵!");
	}
}

抽象类需要注意的几点:

  1. 抽象类不能被实例化。
  2. 有抽象方法的类,一定是抽象类,但是抽象类可以没有抽象方法。
  3. 当一个类继承的父类是抽象类的话,需要我们把抽象类中的所有抽象方法全部实现。
  4. 抽象方法不能有方法体。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狮子座的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值