抽象类和接口

抽象类和接口

作用:是为了增强多态 为了增强动态绑定 为了方法重写而设计的

抽象类的定义:

1、通过abstract关键字来修饰类,抽象类不能完成实例化,不能自己去new,而且一定是父类,一定是给子类继承的,通过子类来完成实例化。

2、抽象类可以拥有自己的构造函数,给子类调用完成依赖的。

3、抽象类可以没有抽象方法,但有抽象方法的类一定是抽象类。

4、抽象类可以有实例方法和静态方法,可以有方法的实现

5、一个子类继承了抽象父类,如果没有实现父类的抽象方法,那么这个子类是抽象类。

     一个子类继承了抽象父类,可以不实现父类的抽象方法,也可以实现父类的抽象方法。

public abstract class Model {

    //抽象类中可以有自己的构造函数
    public Model(){}

    //抽象类中可以有实例方法
    public void check(){
        System.out.println("正在检查...");
    }

    //抽象类中可以有类方法
    public static void Wang(){
        System.out.println("正在检查...");
    }
    
    public static void setMsg(){}

    //定义一个抽象方法 抽象方法没有方法体{ } 等同于Python中的pass
    public abstract  void getMsg();

    //public abstract static void checkStatic();    不能加static 加了则爆红
}

正常的使用:

public abstract class Animal {
    public abstract void ect();
    public abstract void run();
}



public class Dog extends Animal{
    @Override
    public void ect() {
        System.out.println("吃骨头");
    }

    @Override
    public void run() {
        System.out.println("追耗子");
    }
}
public abstract class Animal {
    public abstract void ect();
    public abstract void run();
}



class Dog extends Animal{
    @Override
    public void ect() {
        System.out.println("吃骨头");
    }

    @Override
    public void run() {
        System.out.println("追耗子");
    }

    public static void main(String[] args) {
        //Animal animal=new Animal();  抽象类自己不能实例化 爆红
        Animal animal=new Dog();    //可以一个父类指向一个子类  动态绑定
        //增强方法重写
        animal.ect();   //吃骨头
        animal.run();   //追耗子
    }
}

 

上一篇:分享自己做的一个指定进程以及线程长时间cpu监控的工具


下一篇:抽象类笔记