`
yy77
  • 浏览: 8334 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类

通过private的构造方法来强制一个类不能被实例化

阅读更多
要保证一个类不能被实例化(比如某些Utility类,主要是一些静态方法),为这个类写一个private的构造方法那是最好的了。
public class UtilityClass {
    private UtilityClass() {
        throw new AssertionError();
    }
......
}

这样做同时保证了这个类不能被继承。因为子类必须要调用父类的构造方法的。
如果真的写了那么一个子类会怎么样呢?会在编译的时候出错的,表明父类的构造方法是private的。
Parent() has private access in Parent.
1
1
分享到:
评论

相关推荐

    PHP的类、对象、构造方法。

    当我们说“实例化”一个类时,意味着我们在内存中创建了一个该类的具体代表。例如: ```php $p = new Person(); ``` 这里,`$p`是一个指向`Person`类实例的引用,可以使用`->`运算符来访问其属性,如`$p->name`和`...

    PHP程序设计-3期(KC016) 3.8.1创建和使用类常见问题:创建类和实例化对象.docx

    在示例1中,程序员尝试实例化一个名为`Person`的类,但在此之前并未声明这个类。这是个典型错误,因为PHP在使用任何类之前都需要先定义它。正确做法应该是: ```php class Person { // 类的属性和方法 } $p1 = ...

    Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口

    即使抽象类不能直接实例化,但子类在实例化时可能会调用父类的构造方法来初始化数据。例如: ```java abstract class Person { private String name; public Person(String name) { this.name = name; } // ...

    接口和抽象类

    - 抽象类不能被实例化,但可以被继承。 - 如果一个类包含抽象方法,那么这个类必须被声明为抽象类。 #### 四、接口与抽象类的区别 - **实例化**:抽象类不能直接实例化,但可以创建抽象类的引用指向其子类的对象...

    php实例化一个类的具体方法

    本文将详细介绍PHP中如何实例化一个类,并且会涉及到类的声明、对象的创建以及对象属性和方法的使用等概念。 首先,要理解什么是类。在面向对象编程中,类是一个模板或蓝图,它定义了一组属性(数据)和方法(行为...

    类的继承与多态性

    纯虚函数则用于声明抽象基类,它不能被实例化,但可以作为其他类的基类,强制它们实现特定接口。 描述中提到了派生类构造函数初始化基类成员和对象成员的方法。在创建派生类对象时,首先会调用基类的构造函数来初始...

    接口和几种类的比较.docx

    - 定义:静态类是一种特殊的类,它不能被实例化,所有成员都是静态的。 - 访问修饰符:通常为`public`,因为静态类不能有实例,所以不需要通过实例访问。 - 构造函数:静态类不能有构造函数,因为它不允许实例化...

    详细的定义了类及其使用方法

    关于标签“不能用实例化类得方式来实例化接口”,这是因为在.NET中,接口不提供具体的实现,它们只定义方法、属性、事件和索引器的签名。接口是用来强制实现某些功能的规范,而不是可以直接创建实例的对象。如果你想...

    【05-面向对象(下)】

    • 抽象类不能被实例化,可以通过其子类给他赋值,普通类里有的抽象里也有,定义抽象方法只需在普通方法上增 加abstract修饰符,并把普通方法的方法体(也就是方法后花括号括起来的部分)全部去掉,并在方法后增加...

    java的部分基础知识(4)

    - **不能实例化**:由于抽象类无法被实例化,我们不能直接使用`new`关键字创建抽象类的对象。但是可以通过子类实例化,然后通过子类对象调用抽象类的方法。 - **多态性**:抽象类可以用于类型转换,实现多态性,...

    Java基础复习题.docx

    9. 接口实例化与构造方法:接口不能被实例化,因为它没有实例变量和构造方法。接口只能包含常量和抽象方法。 10. 接口引用:接口变量可以引用实现了接口的类的实例,从而实现多态调用。 11. 接口声明错误:接口不...

    Java试题综合(全),类,对象,接口,基本语法等

    `final`修饰的方法不能在子类中重定义,`final`类不能有子类,`final`方法也不能被继承。 关于基本语法,Java中的字符使用16位Unicode编码。一个Java源程序中可以有多个公共类,但源文件名必须与公共类名相同。`...

    设计一个只能在堆上或栈上实例化的类

    另一种方法是将构造函数设为 private,然后通过一个静态工厂方法来创建对象。例如: ```cpp class FinalClass { public: static FinalClass* GetInstance() { cout ; return new FinalClass; } static void ...

    JAVA习题集2.doc

    编译出错,因为类的实例变量不能在类的外部直接初始化,需要使用构造方法或实例化对象。 8. 示例代码分析: - 给定的代码片段是类 Circle 的定义,包含了两个实例变量 name 和 radius,但缺少构造方法和方法体,...

    java复习资料.doc

    抽象类(用`abstract`修饰)不能直接实例化,它们可以包含抽象方法(只有声明没有实现)。如果一个非抽象子类继承抽象类,它必须实现所有抽象方法。抽象类可以作为上转型对象,允许调用子类重写的方法。 接口(用`...

    JavaSE习题.docx

    - 抽象类是可以包含抽象方法(无实现的方法)的类,可以被其他类继承,但不能实例化。 - 接口是一种完全抽象的类型,只能包含静态常量和抽象方法,不能有实例变量,可以被类实现(implements)。 2. 关于final...

    day01-继承&修饰符&多态&抽象类.pdf

    抽象类在Java中通过`abstract`关键字定义,它不能被实例化,只能通过继承被使用。抽象类可以包含抽象方法(没有方法体的方法),这些抽象方法必须在非抽象子类中实现(重写)。抽象类通常用于描述具有共同特性的类的...

    2022年JAVA基础考试题及答案.docx

    抽象类不能被实例化,即不能使用`new`关键字来创建对象。抽象类的主要目的是为了被继承。 - **抽象方法**: 抽象方法是没有具体实现的方法,即没有方法体。在抽象类中,抽象方法必须由子类覆盖并提供具体实现。 - **...

    E02_面向对象复习.pdf

    抽象类不能被实例化,只能作为其他类的父类。 9. 如果一个抽象类中有三个抽象方法,子类要避免编译错误,必须覆盖(重写)这三个抽象方法,或者子类本身也声明为抽象类。 10. 定义接口的关键字是`interface`,实现...

    Java拓展班笔记,基础内容

    - `final`修饰的类不能被继承,修饰的方法不能被重写,修饰的变量一旦赋值不能修改。 6. 接口: 接口使用`interface`关键字定义,通过`implements`关键字实现。接口中的方法默认是抽象的,并且可以多继承。接口主要...

Global site tag (gtag.js) - Google Analytics