文章目录
前言
首先在学习抽象类以及抽象方法之前,我们得先了解什么是抽象,抽象其实也被成为面向对象的第四大特征,abstract就是java中对应的关键字,抽象往往使用在无法指定具体行为的时候或是无法描述某一行为的时候,就需要使用抽象的概念来模糊定义这一行为。
1、抽象类
1.1 什么是抽象类
抽象类,也就是抽象的类,既然是抽象的类,那么它就无法被实例化,也就是说无法生成一个对象,但是仍然需要清楚的是抽象类是具有构造器的,那么抽象类存在的意义是什么?在实际运用中抽象类跟继承中父类承担的作用是一致的,同样是提取共有方法,保证继承关系的正确性,但是由于不能被实例化,所以抽象类一般处于继承关系的根部。其他需要注意的就是
- 抽象类中可以编写抽象方法
- 抽象方法只出现于抽象类中
- 抽象类中不可以出现抽象静态方法,例如 abstract static
- 抽象类中可以含有非抽象方法,并且可以正常被继承使用。
- 抽象类含有构造器
- abstract关键字只能用于修饰类、方法,不能用来修饰变量、代码块、构造器
1.2 如何使用抽象类
了解了什么是抽象类,我们在学习使用抽象类首先要明白如何定义抽象类。
public abstract class 抽象类名{}
然后在继承关系上我们就可以直接去使用extends关键字来继承抽象类。
public class 子类名 extends 抽象类名{}
而抽象类中的属性的使用只需要正常引用就行,属性的权限默认是package,其中非静态属性可以被正常继承和重写。
2、抽象方法
2.1 什么是抽象方法
抽象方法也就是那些无法被具体化或描述出来的方法,比如说吃饭,人与猫与狗等动物各不相同,那么我们不能在父类中直接把eat方法写好,只能在父类中定义,然后在子类中再来编写具体的方法。那么这跟之前的父类不是一致了吗,为什么需要使用到抽象方法呢,这是因为abstract关键字修饰的抽象方法必须被重写,这就很好的限制了子类中忘记编写父类中继承下来的没有具体编码的方法,这样就解决了继承中的方法重写问题,这也是抽象方法的意义所在。
2.2 抽象方法的使用
首先定义抽象方法十分简单
void abstract 方法名(参数);
唯一需要注意的就是抽象方法没有具体编码,所以我们只需要定义出方法即可,不需要有{},这会导致报错。至于其他的正常方法不受抽象方法影响,正常定义即可。
3、运用实例
现在设计一个抽象父类animal,让鸡鸭继承animal类,并且编写一个抽象方法eat,正常方法sing,使得各个方法按照预期运行。
抽象父类animal
public abstract class animal {
public static String name = "动物";
public abstract void eat();
public void sing(){
System.out.println("动物在叫");
}
}
子类duck
public class duck extends animal{
@Override
public void eat() {
System.out.println("鸭吃饭");
}
}
子类chicken:
public class chicken extends animal{
@Override
public void eat() {
System.out.println("鸡吃饭");
}
}
测试类:
public class JavaTest4 {
public static void main(String[] args) {
chicken c = new chicken();
duck d = new duck();
c.sing();
d.sing();
d.eat();
c.eat();
}
}
最终按照预期运行,希望有所帮助。
标签:03,java,abstract,eat,抽象,抽象类,方法,public From: https://blog.csdn.net/m0_74345597/article/details/142586296