美文网首页
Java-----抽象方法

Java-----抽象方法

作者: 会写代码的小猿猴 | 来源:发表于2021-12-21 16:04 被阅读0次

抽象类是Java中非常简单但很重要的一个知识点,本来觉得简单不想写的,但觉得学习不分简易,还是那句话,万丈高楼平地起,还是老老实实打好基础,学习本文之前,建议先观看我的上一篇文章Java-----继承

什么是抽象类

含有抽象方法的类都叫抽象类。
那什么是抽象方法呢?
抽象方法:将共性的行为(方法)抽取到父类之后,发现该方法的实现逻辑无法在父类中给出具体明确,该访法就可以定义为抽象方法。(声明时需要在方法的返回值类型前面加上abstract关键字)

抽象类中需要注意的点

这里注意点就不死记硬背了,我也写一个小的案例来说明需要注意的地方
小案例
需求:定义猫类(Cat)和狗类( Dog )
猫类成员方法: eat (猫吃鱼) drink (喝水... )
狗类成员方法: eat (狗吃肉少drink (喝水... )
分析:
1.猫类和狗类中存在共性内容,应向上抽取出一个动物类( Animal )
2.父类Animal中 ,无法将eat方法具体实现描述清楚,所以定义为抽象方法
3.抽象方法需要存活在抽象类中,将Animal定义为抽象类
4.让Cat和Dog分别继承Animal ,写eat方法
5.测试类中创建Cat和Dog对象,调用方法测试
接下来我们根据分析一步步走,先定义父类Animal ,并在里面实现两个方法。

public abstract class Animal {
    public void drink() {
        System.out.println("喝水");
    }

    public abstract void eat();
}

定义两个方法时发现drink()方法里面清楚都是要做喝水的行为,但是eat()方法一个要吃鱼,一个要吃肉,所以无法确定具体需求,只能定义为抽象方法,因为抽象方法只能在抽象类中,所以需要在class前面加上abstract将Animal类变成抽象类。
接下来定义猫类和狗类去继承父类Animal。
Cat.java

public class Cat extends Animal{
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
}

Dog.java

public class Dog extends Animal{
    @Override
    public void eat() {
        System.out.println("狗吃肉");
    }
}

我们在写的时候发现继承了Animal后,子类中必须重写它的抽象方法eat().
接下来写个简单的测试类进行测试
Test.java

public class Test {
    public static void main(String[] args) {
        Cat c = new Cat();
        c.eat();
        c.drink();
        Dog d = new Dog();
        d.eat();
        d.drink();
    }
}

测试结果:


image.png

总结:

  • 抽象方法必须存在于抽象类中,具有抽象方法的类称为抽象类。
  • 继承抽象类的子类必须实现父类中所有的抽象方法,实现后可以重写父类抽象方法,如果不重写,自身也必须为抽象类。
  • 抽象类不能被实例化(不能创建抽象类的对象)
  • 抽象类中可以没有抽象方法,但是有抽象方法的类必须生命为抽象类。
    抽象类和抽象方法都非常简单,很好理解,需要记住它的这几个注意事项,以免在开发过程中踩坑,顺便扩充一个知识点,抽象类在设计模式中有非常经典的应用,叫做模板设计模式。
    模板设计模式:把抽象类整体就可以看做成一个模板 ,模板中不能决定的东西定义成抽象方法让使用模板的类(继承抽象类的类)重写抽象方法实现需求。模板设计模式内部有模板方法,不允许被更改,需要用final关键字修饰。
    这里就自己理解一下,只可意会,不可言传了。

ps:

final关键字
final关键字是最终的意思,可以修饰(方法,量,类)
final修饰的特点:

  • 修饰方法: 表明该方法是最终方法,不能被重写
  • 修饰变量:表明该变是常量,不能再次被赋值
  • 修饰类:表明该类是最终类,不能被继承
  • 修饰基本类型: final 修饰的是基本类型 ,该变量数据值不能发生改变
  • 修饰引用类型: final修饰的是引用类型,该变量的地址值不能发生改变,但是地址里面的内容是可以发生改变的。

相关文章

  • Java-----抽象方法

    抽象类是Java中非常简单但很重要的一个知识点,本来觉得简单不想写的,但觉得学习不分简易,还是那句话,万丈高楼平地...

  • 技术问 - 什么是抽象类

    抽象方法:没有具体方法体的方法,那么此方法就是抽象方法抽象类:一个类中如果有抽象方法,则该类必须是抽象类; 抽象类...

  • Jade day04抽象类、接口、多态

    抽象类 抽象方法: 没有方法体的方法(只有方法的声明) 抽象类:包含抽象方法的类就是抽象类定义抽象类 举例 实现类...

  • 抽象、接口

    1.抽象类与抽象方法2.接口 1.抽象类与抽象方法 1.1 抽象方法使用abstract修饰的方法,没有方法体,只...

  • Java零基础自学DAY9 2018-03-21

    抽象类 抽象方法是只有方法签名,没有方法实现的方法 抽象方法和抽象类必须用abstract 修饰符来定义 有抽象方...

  • 抽象类

    1. 抽象方法和抽象类 规则如下:抽象类和抽象方法必须使用abstract修饰符,抽象方法不能有方法体抽象类不能被...

  • php中 implements,interface

    interface中的方法都是抽象方法,抽象方法用public修饰。抽象方法就是没有方法体的方法。 interfa...

  • 抽象类 abstract

    抽象方法: 如果父类当中的方法不确定如何进行{}方法体实现,那么就应该是一个抽象方法 抽象方法&抽象类的定义 抽象...

  • Java——抽象类与接口

    抽象类 抽象类的基本概念 抽象方法在理解抽象类之前,先了解抽象方法,抽象方法是指只经过声明而未实现(没有方法体{}...

  • 抽象方法及其模板

    抽象方法 使用abstract修饰且没有方法体的方法,称为抽象方法。 特点:①使用抽象abstract修饰,方法没...

网友评论

      本文标题:Java-----抽象方法

      本文链接:https://www.haomeiwen.com/subject/upsxqrtx.html