java抽象类详述

本文深入探讨了抽象类和抽象方法的概念,解释了多态的实现方式,并详细阐述了抽象类的使用规则,包括构造方法、子类重写、抽象方法的限制等关键点。

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

抽象类

先看下面三个类:

public class Father 
{
	public void eat() 
	{
		System.out.println("吃饭...");
	}
}


public class Student extends Father{
	@Override
	public void eat() {
		System.out.println("正在吃饭...");
	}
}


public class Tool {
	
	public static void main(String[] args) {
		Father father = new Student(); //多态。
		father.eat();
	}
}

输出:
正在吃饭…

		Father father = new Student(); //多态。
		father.eat();

上面是多态的形式,因为子类改写了eat方法,所以eat方法的内容与父类eat的方法体没有实质作用,因此,引入了抽象方法:没有方法体的方法。进而,引入了抽象类:一个类中如果有一个抽象方法,则该类必须为抽象类。

public abstract class Father  //抽象类。
{
	public abstract void eat(); //抽象方法。
	
}

抽象类需要注意几点:

1、抽象类有构造方法,但是不能创建对象。

在这里插入图片描述
创建了构造方法并没有报错,但创建对象时报错。

2、如果一个类没有重写完父类中的所有抽象方法,则该类必须为抽象类。

当父类有多个方法时:
在这里插入图片描述
如果子类没有重写完,将会报错:
在这里插入图片描述
此时若将子类改为抽象类,则不会报错:
在这里插入图片描述

3、抽象类中可以没有抽象方法。

在这里插入图片描述
抽象类中有不是抽象方法的main方法并没有报错。

4、抽象类与普通类的区别:

① 抽象类有abstract修饰 ,普通类没有。
抽象类有abstract修饰:
在这里插入图片描述
普通类:
在这里插入图片描述
② 抽象类不能创建对象,普通类可以创建对象。
抽象类创建对象时会报错:
在这里插入图片描述
普通类不会报错:
在这里插入图片描述
③ 抽象类中可以有抽象方法,普通类绝对不能有抽象方法。
抽象类可以有抽象方法,也可以没有:
在这里插入图片描述
但普通类一定没有抽象方法:
在这里插入图片描述
思考:

abstract final class Mammal{ } 能编译通过吗, why?
不能通过。如果抽象类前面加final意味着该类不能继承,则抽象类的抽象方法永远不能实现,所以不能加final。

Mammal抽象类中move抽象方法的访问权限可以为private吗,即“private abstract void move();”, why?
不可以,被private修饰的类只能在本类起作用,则抽象方法不能被实现。

Mammal抽象类中move抽象方法可以由static修饰吗,,即“public static abstract void move();” why?
不可以,如果加static修饰,则可以通过类名直接调用方法,可是抽象方法不能直接被调用,所以是无意义的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值