使用抽象类阻止实例化

时间:2023-04-14
标签: #Java #abstract类 #设计模式


可以将一个不包含任何抽象方法的类指明为 abstract,在类中的抽象方法没啥意义但想阻止创建类的对象时,这么做就很有用。
——————
这是有用的,可是这么做的意义是什么呢,在实际开发过程中,能举个例子么?

在实际开发过程中,有时候我们希望一个类仅仅作为其他类的基类,而不允许直接创建该类的实例。这种情况下,将这个类声明为抽象类是有意义的。即使这个抽象类没有抽象方法,它仍然不能被实例化,从而确保了这个类仅作为基类存在。

例如,假设我们有一个系统,其中包含各种类型的员工。我们想创建一个通用的基类 Employee,该类包含一些共享的属性和方法,但我们希望用户只能创建具体类型的员工实例(如 ManagerDeveloper 等),而不是直接创建 Employee 实例。

下面是一个简单的例子:

public abstract class Employee {
    private String name;
    private int id;

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

    public String getName() {
        return name;
    }

    public int getId() {
        return id;
    }

    // 其他共享的方法
}

public class Manager extends Employee {
    public Manager(String name, int id) {
        super(name, id);
    }

    // Manager特有的方法
}

public class Developer extends Employee {
    public Developer(String name, int id) {
        super(name, id);
    }

    // Developer特有的方法
}

在这个例子中,我们将 Employee 类声明为抽象类,即使它没有抽象方法。这样一来,用户只能创建 ManagerDeveloper 等具体类型的员工实例,而不能直接创建 Employee 实例。这有助于我们在代码中实现更清晰的层次结构和逻辑。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值