抽象类

毕向东 java 视频笔记整理

分析问题:
描述狗,具备吼叫功能。
描述狼,具备吼叫功能。
两个事物具备共性,向上抽取。犬科,具备吼叫功能。

定义

描述一个事物,却没有足够信息,这时就将这个事物称为抽象事物。

作用

面对抽象的事物,虽然不具体,但是可怪简单化,不用面对具体的事物。

特点

1.抽象方法一定在抽象类中,都需要用 abstract 来修饰。
2.抽象类不能实例化。
3.只有子类覆盖了所有的抽象方法后,子类具体化,子类才能创建对象。如果没有覆盖所有抽象方法,那么子类还是一个抽象类。

抽象类也是不断的向上抽取而来的。抽取了方法的声明而不确定具体的方法内容,由不同的子类来完成具体的方法内容。

问题:

1.抽象类中有构造方法吗?

有,抽象类的构造方法虽然不能给抽象类对象实例化,因为抽象类不能创建对象。但是抽象类有子类,它的的构造方法可以子类对象实例化。
抽象类和一般类的异同点?
相同:都是用来描述事物,都可以进行属性和行为的描述。
不同:抽象类描述事物的信息不具体,一般类描述事物的信息具体。
代码不不同:
抽象类中可以定义抽象方法,一般类不行。
抽象类不可以实例化,一般类可以。

2.抽象类一定是一个父类吗?

是。

3.抽象类中可以不定义抽象方法吗?

可以,此时抽象类的作用仅是用来禁止创建对象。

4.抽象关键字 abstract 和哪些关键字不能共存?

final: final 修饰的方法不能被覆盖,abstract 修饰的方法必须被覆盖。
final 修饰的类不能被继承,abstract 修饰的类必须被继承。
private: private 修饰的成员是私有的,不能被继承。
static: static 修饰的成员是类变量,类方法。可用类名调用,而抽象类调用它的抽象方法是没有意义的。

//抽象类
abstract class 犬科 {
    //抽象方法
    abstract void 吼叫();
}


classextends 犬科 {
    void 吼叫() {
        System.out.println("汪汪...");
    }
}


classextends 犬科 {
    void 吼叫() {
        System.out.println("嗷嗷...");
    }
}

抽象类应用

需求:
公司中程序员有姓名、工号、薪水、工作内容。项目经理除了有姓名、工号、薪水、工作内容,还有奖金。
对给出的需求进行数据建模

//描述雇员的雇员类
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();
}


//描述程序员的程序员类
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 double bonus;

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

    public void work() {
        System.out.println("manage...");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值