本文已参与「新人创作礼」活动,一起开启掘金创作之路。
抽象方法... 听着就很抽象的样子 脑中不禁浮现出了各种抽象画的图像 缩在被窝里打起了退堂鼓
但是! Java中的抽象没那么难
抽象方法是个啥? 通俗来说 就是不知道该咋做的方法 先别晕 我给你举个小栗子
我们创建一个类,什么类呢?病人类 病人就是生了病的人 生病的人要做什么呢? 得吃药
所以对于病人类来说 吃药就是一个方法
但是!
要用什么药?
他是该吃开塞露呢?
还是该喝风油精呢?
我们并不确定
这要看病人是哪儿有病
所以我们不知道这个方法具体要如何执行,就叫做抽象方法
概念搞清楚了 我们要如何定义抽象方法呢? 其实也简单 普通方法不加花括号,前面再加个abstract关键字,以分号结束 比如:
public abstract void tackMedicine();
写上去之后,你会惊奇的发现,报错了!! 为什么呢? 因为抽象方法只能在抽象类中使用 所以你的类定义还要稍稍改一下:同样也加一个abstract 写完后就是这个亚子↓
public abstract class Patients{
public abstract void tackMedicine();
}
ps:在抽象类中定义普通方法是完全没有问题的哟~
现在定义好抽象类和抽象方法了,我们该怎么用呢?
如果你像以前一样,直接暴力new一个该类的对象,就会被打pp 报错哟
因为我们的抽象类不能直接定义其对象
那我们该怎么用呢? 我们可以创建一个新的子类来继承我们的抽象父类 像这样:
public class ColdPtients extends Patients{
}
ColdPtients是感冒病人的意思,可不是冷藏病人哟
写完之后,你会惊奇的发现:又报错了!!!
停停停!
别打了别打了,再打孩子就傻了!
我们就差最后一步啦~
我们需要在子类中再写一遍父类中的抽象方法,并去掉abstract关键字,因为我们的子类已经具体了,不再需要抽象的方法。
public class ColdPtients extends Patients{
public void tackMedicine(){
System.out.println("来点儿清凉油");
}
}
好啦,我们现在就可以开始创建子类对象进行使用啦:
public static void main(String[] args){
ColdPatients coldPatient = new ColdPatients();
}
大功告成~
回顾一下:我们先创建了病人抽象类,在里面写了吃药这一抽象方法,然后用具体的子类来继承父类,并把父类中的抽象方法去掉abstract进行使用,我们就成功地给感冒的人开了一瓶清凉油。