面向对象之抽象类

什么是抽象类

    abstract:关键字,用于修饰方法和类

    抽象方法:不同类的方法是相似,但是具体内容又不太一样,所以我们只能抽取他的声明,没有具体的方法体,没有具体方法体的方法就是抽象方法

     抽象类:有抽象方法的类必须是抽象类

抽象类的特点

    如果一个类中有抽象方法,那么这个类必须是抽象类

    抽象类和抽象方法必须被abstract修饰

    抽象类不能创建对象(不能实例化)父类引用指向子类对象

    抽象类中可以有非抽象的方法

    抽象类也可以被其他类继承,也可以继承其他类

    一个类继承了抽象类要么重写所有的抽象方法,要么他自己是抽象类

抽象类的细节

    1.abstract关键字不能和那些关键字共存?

        不能共存的关键字: private (私有的) static(静态的)  final(最终的)

    2.抽象类中是否可以有构造方法? 可以

        作用:对成员变量进行初始化.

    3. 抽象类中是否可以没有抽象方法? 可以

        作用:不想被实例化.

抽象类的作用

1.作为一个父类存在,和继承中将的一般类一样的. 提取子类中共性的内容.

2.起到一个规范或者规定的作用.

3.限制的作用: 不能被实例化.

/*

 *雇员(Employee)示例:

需求:

公司中

程序员(programmer)有姓名(name),工号(id),薪水(pay),工作内容(work)。

项目经理(Manager)除了有姓名(name),工号(id),薪水(pay),还有奖金(bonus),工作内容(work)

员工:

属性 name,id,pay

行为 work

 */

public class AbstractTest2 {

    public static void main(String[] args) {

        Programmer p = new Programmer();

        p.work();

        Manager m = new Manager();

        m.work();
    }
}

abstract class Employee {

    String name;//姓名
    
    String id;//id

    double pay;//薪水

    //工作

    public abstract void work();

}

class Programmer extends Employee {

    @Override

    public void work() {
        System.out.println("写代码");
    }
}

class Manager extends Employee {

    byte bonus;

    @Override

    public void work() {
        System.out.println("盯着程序员写代码");
    }
}

猜你喜欢

转载自blog.csdn.net/happy_write/article/details/80025403