抽象类abstract

  当父类的一些方法不能确定时, 可以用abstract关键字来修饰该方法,这个方法就是抽象方法,用abstract来修饰该类就是抽象类。

// Animal 为抽象类
abstract class Animal{
    private String name;

    public Animal(String name) {
        this.name = name;
    }
    
    // 当一个类中存在抽象方法时,需要将该类声明为 abstract 类
    // 般来说,抽象类会被继承,有其子类来实现抽象方法
    public abstract void eat();
}

抽象类的介绍

  1) 用abstract关键字来修饰一个类时,这个类就叫抽象类;

访问修饰符 abstract 类名{}

  2) 用abstract关键字来修饰一个方法时,这个方法就是抽象方法

访问修饰符 abstract 返回类型 方法名(参数列表); 	// 没有方法体

  3) 抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现抽象类();

  4) 抽象类,在框架和设计模式使用较多。

抽象类的使用细节

  1) 抽象类不能被实例化;

  2) 抽象类不一定要包含abstract方法。 也就是说,抽象类可以没有abstract方法;

public class Abstract01 {
    public static void main(String[] args) {
    	// 抽象类,不能被实例化
        new A();	// 报错
    }
}

// 抽象类不一定要包含abstract方法。 也就是说,抽象类可以没有abstract方法
abstract class A {
    public void hi(){
        System.out.println("hi");
    }
}

  3) 旦类包含了abstract方法,则这个类必须声明为abstract;

  4) abstract只能修饰类和方法,不能修饰属性和其它的;

  5) 抽象类可以有任意成员【因为抽象类的本质还是类】,比如:非抽象方法、构造器、静态属性等等;

// 抽象类不一定要包含abstract方法。 也就是说,抽象类可以没有abstract方法
abstract class A {
    public int n1 = 10;
    
    public static String name = "MilkyWay";
    
    public void hi(){
        System.out.println("hi");
    }
    
    public abstract void hello();
    
    public static void ok(){
        System.out.println("ok");
    }
}

  6) 抽象方法不能有主体;

abstract void aa(){}; 	// {} 不可以存在

  7) 如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为 abstract 类;

abstract class B {
    public abstract void hi();
}

abstract class C extends B {}

class D extends B {
    @Override
    public void hi() {  // 这里相当于 D子类 实现了 父类B 的抽象方法
                        // 所谓实现方法,就是有方法体
    }
}

  8) 抽象方法不能使用private、final 和static来修饰,因为这些关键字都是和重写相违背的。

相关推荐

  1. 抽象abstract

    2024-03-20 02:26:01       20 阅读
  2. 抽象抽象方法(abstract)

    2024-03-20 02:26:01       16 阅读
  3. 抽象抽象方法(abstract)

    2024-03-20 02:26:01       6 阅读
  4. 抽象工厂模式(Abstract Factory)

    2024-03-20 02:26:01       42 阅读
  5. 抽象abstract)和接口(interface)

    2024-03-20 02:26:01       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-20 02:26:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-20 02:26:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-20 02:26:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-20 02:26:01       18 阅读

热门阅读

  1. 安达发|APS高级计划与排产软件在家具业的新趋势

    2024-03-20 02:26:01       21 阅读
  2. 02 Statement和PreparedStatement

    2024-03-20 02:26:01       19 阅读
  3. SpringBoot项目串口通讯之jSerialComm

    2024-03-20 02:26:01       22 阅读
  4. 代码随想录算法训练营|一刷总结与反思

    2024-03-20 02:26:01       25 阅读
  5. 73_Pandas获取分位数/百分位数

    2024-03-20 02:26:01       19 阅读
  6. Flutter如何正确使用图片资源

    2024-03-20 02:26:01       18 阅读
  7. UDP协议

    UDP协议

    2024-03-20 02:26:01      20 阅读
  8. 程序员排查BUG指南

    2024-03-20 02:26:01       20 阅读
  9. 开发遇到的bug:设置好的请求头不起作用

    2024-03-20 02:26:01       20 阅读