java -- 抽象类

抽象类


抽象就是把一些具体有共同点的东西,单独抽离出来,形成一个抽象的模板。

在这里插入图片描述

抽象成一套模板,这样子,可以有助于复用。
在这里插入图片描述


抽象类的规则

  • 有抽象方法的类就是抽象类,抽象方法就是没有方法体的方法,只是声明了没有实现的
  • public abstract void work(); //这就是一个抽象方法,被abstract所修饰
  • 抽象类一定要被abstract 这个关键字所修饰
  • 普通类继承抽象类的关键字是extends,而且继承抽象类,一定要实现抽象类的抽象方法
  • 抽象类不能被实例化,但是可以通过多态new出来
  • 抽象方法不可以被private修饰,如果抽象方法被private修饰,那么子类不可见,就无法重写了
  • 抽象类不可以被final来修饰 , 如果被final修饰,这个类就不能被继承了;
  • 抽象类中不仅有抽象方法,也会有普通方法,普通方法不需要都被重写,但是抽象方法要求全部被重写
  • 抽象类中可以有构造方法,new子类实例的时候,就先调用抽象类的构造方法,再去调用子类自身的
  • 如果不想重写抽象类里的抽象方法,子类一定也是一个抽象类
  • 抽象类一定是一个父类,只有子类继承才能被实例化
  • 抽象类是单继承的,接口是多继承的。
  • 外部抽象类不能被static修饰,内部抽象类可以被static 修饰,调用内部类的方法就是A.B ,当成一个类来使用。抽象类内部放一个抽象类。

这就是一个抽象类

package test;

//描述雇员。
abstract class Employee{
    private String name ;
    private String id ;
    private double pay ;

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

    public abstract void work();
    public void get(){
        System.out.println("aaa");
    }
}

//描述程序员
abstract class sss extends Employee{
    sss(String name,String id, double pay){
        super(name,id,pay);
    }

    public void work(){
        System.out.println("code..." );
    }
}

//描述程序员
class Programmer extends Employee{
    Programmer(String name,String id, double pay){
        super(name,id,pay);
    }

    public void work(){
        System.out.println("code..." );
    }

    
}

//描述经理
class Manager extends Employee{
    private int bonus ;

    Manager(String name,String id, double pay,int bonus){
        super(name,id,pay);
        this.bonus = bonus;
    }

    public void work(){
        System.out.println("manage" );
    }
}

这个是测试的主方法,这个地方体现了多态,很巧妙,可以通过接口或者抽象类,根据不同的子类,来new出不同的对象


 public static void main(String[] args) {
        Employee employee = new Manager("cc","cc",1,12);
        Employee getEmployee = new Programmer("aa","12",13);
        employee.work();
        getEmployee.work();
    }
  

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值