0
点赞
收藏
分享

微信扫一扫

抽象类详解

夏天的枫_ 2022-04-14 阅读 68
java

抽象类介绍

  1. 用abstract关键词来修饰一个类时这个类叫抽象类,
    访问修饰符 abstract 类名{ }
  2. 用abstract关键词来修饰一个方法时,这个方法就是抽象方法
    访问修饰符 abstract 返回类型 方法名 (参数列表) 注意没有方法体
  3. 抽象类的价值更多在于设计,是设计好框架后,让子类继承并实现抽象类 ,在框架和设计模式使用较多

抽象类使用细节

  1. 抽象类不能被实例化
public class Abstract01 {
    public static void main(String[] args) {
        new A();  //报错,抽象类不能被实例化
    }
}
abstract class A{
}
  1. 抽象类不一定要包含abstract方法,但是一但有abstract方法,这个类必须声明成抽象类
  2. abstract只能修饰类和方法,不能修饰属性和其他的
  3. 抽象类可以有任意成员(抽象类本质还是类) 比如抽象方法,构造器,静态属性等
  4. 如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法(重写),除非她自己也声明为abstrsact类
abstract class A{
    public abstract void hi();
}
 class B extends A{
     @Override
     public void hi() { //B类继承A类,B类实现了A类的方法,正确

     }
 }
 abstract class C extends A{
             //C类继承了A类,C类也声明为abstract方法,正确
 }
  1. 抽象方法不能使用private ,final,static来修饰,因为这些关键词都是与重写相违背的
    抽象类的例子
public class abstractExercise01 {
    public static void main(String[] args) {
        Manager jack = new Manager("jack", "018", 100000);
       jack.setBouns(10000);
       jack.work();
        CommonEmployee li = new CommonEmployee("li", "0188", 300000);
            li.work();
    }
}
abstract class Employee{
    private String name;
    private String id;
    private double salary;

    public Employee(String name, String id, double salary) {
        this.name = name;
        this.id = id;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public abstract void work();   //将work做成抽象方法

}
class CommonEmployee extends Employee{
    public CommonEmployee(String name, String id, double salary) {
        super(name, id, salary);
    }

    @Override
    public void work() {
        System.out.println("普通员工"+getName()+"工作中");
    }
}
class Manager extends Employee{
    public Manager(String name, String id, double salary) {
        super(name, id, salary);
    }
    private double bouns;

    public double getBouns() {
        return bouns;
    }

    public void setBouns(double bouns) {
        this.bouns = bouns;
    }

    @Override
    public void work() {
        System.out.println("普通员工"+getName()+"工作中");
    }
}
举报

相关推荐

0 条评论