【Java】抽象类的概述

x33g5p2x  于2021-11-22 转载在 Java  
字(1.1k)|赞(0)|评价(0)|浏览(404)

一、前言

前面我们学习了多态中的转型,那么现在我们开始学习抽象类的概述和使用

二、抽象类

生活大多事物是具有抽象含义的,比如我说一个生物,你想不到我说的生物是什么,

在比如说一个动物,你也想不到我说的是什么,这种让人想不到的概念可以理解就是

抽象类。抽象用abstract修饰

三、抽象方法

对于一个没有方法体的方法叫做抽象方法,抽象方法是抽象类的核心。抽象类中可以么有

抽象abstract修饰。

四、抽象类的特点

🗡①抽象类中可以有常量,还可以有变量。

🗡②抽象类中可以有/没有抽象方法,也可以有非抽象方法。

🗡③有抽象方法一点是抽象类,是抽象类不一定有抽象方法。

🗡④抽象类不能直接实例化,但可以通过多态的方式实例化。

🗡⑤子类继承抽象方法时,必须重写父类中的所有抽象方法。

**注意:**若子类不想重写抽象父类中的父类方法,则可以将子类也定义为抽象类,但是

该子类被其他类继承时,其他类除了重写子类中的抽象方法,还要重写父类中的抽象

方法。(此子类父类时没把其他类带入的,而是单纯的写如题)

在Service包下

  1. package service;
  2. public abstract class Animal1 {
  3. public abstract void eat();
  4. public abstract void show();
  5. }

在service下的impl包下

  1. package service.impl;
  2. import service.Animal1;
  3. public class Dog extends Animal1 {
  4. @Override
  5. public void eat() {
  6. System.out.println("🐕吃🐟");
  7. }
  8. @Override
  9. public void show() {
  10. System.out.println("🐕会看门");
  11. }
  12. public void say(){
  13. System.out.println("🐕会吠叫");
  14. }
  15. }

在controller包下

  1. package controller;
  2. import service.Animal1;
  3. import service.impl.Dog;
  4. public class AnimalController1 {
  5. public static void main(String[] args) {
  6. Animal1 a1=new Dog();//向上转型
  7. if(a1 instanceof Dog){
  8. Dog g=(Dog)a1;//向下转型
  9. g.eat();
  10. g.say();
  11. g.show();
  12. }
  13. }
  14. }

创建不同包的作用我前面在这【Java】面向对象之多态篇♥_执久呀的博客-CSDN博客

相关文章

最新文章

更多