把一个类的所有构造方法都声明为private有什么效果? 通常在什么情况下会这样做?

把一个类的所有构造方法都声明为private有什么效果? 通常在什么情况下会这样做?,第1张

首先你得明白。构造方法的用途?
构造方法是用来初始化值的,也就是说构造方法的使用是在
对象进行实例化时对对象的属性进行赋值。
private 此类及具有继承关系的类可用。
通常private 用来进行封装。
构造方法在实例化对象时赋值如
Student stu=new Student();
调用Student中的无参构造方法
也就是调用了
private Student(){
}这个方法
Student stu=new Student(1,2,3);
调用有参构造
private Student(int i,int b,int a){
thisA=a;
thisB=b;
thisI=i;
}

因为Person类的构造方法是私有的,所以我们不能直接利用其构造方法去实例化一个对象,但这个类提供了一个公有静态方法getP,该方法的返回值就是一个Person类对象的引用,该引用就是静态成员p,我们也只能通过这个方法去得到一个Person类的实例,23行与24行当然是同一个引用了,只不过前一行是声明,后一行是给这个引用变量赋了值而已

将一个类的构造函数私有化,可以使得该类不被实例化,和不能被继承。要创建这个类的实例,唯一的办法是提供一个公共静态方法。这种方式被称为单例模式。

私有化代码示例如下:

package test;

class Some{

    private Some(){}

    public static void dosome(){

        Systemoutprintln("dnali");

    }

}

public class Singeleton {

    public static void main(String[] args) {

        //Some s=new Soem();无法实例化Some的对象

        Somedosome();

    }

}

扩展资料:

java 构造函数的执行过程

类初始化时构造函数调用顺序:

(1)、初始化对象的存储空间为零或null值;

(2)、调用父类构造函数;

(3)、按顺序分别调用类成员变量和实例成员变量的初始化表达式;

参考资料:

百度百科-java 构造函数

一,不能被继承,除非还有其它构造方法:\x0d\1,设置一个类不能被继承,两种方法:一是final,二就是构造方法私有;\x0d\2,jave类设计的任何方法只要设置为private之后,就无法继承了,除非改掉构造方法的private的声明,既然声明private就不允许本类之外的任何类使用。\x0d\二,java中类的定义:\x0d\1,final类:又称“最终类”,它只能用来创建对象,而不能被继承,与抽象类刚好相反,而且抽象类与最终类不能同时修饰同一个类;\x0d\2,Private ,编程语句在模块级别中使用,用于声明私有变量及分配存储空间;\x0d\3,语法Private [WithEvents] varname[([subscripts])] [As [New] type] [,[WithEvents] varname[([subscripts])] [As [New] type]] 。

不公开(私有)构造器是为了减少错误的使用和猜测而定的规则。
你可以想象,当你的类拥有一个公有的构造器,而你的文档说明也没有这么详细明确告诉使用者不该使用构造器构造实例而该用静态成员的时候(或者使用者从根本上忽略的文档),使用者就会疑惑,这时候会给程序埋下不稳定的因素,而且有时候很难被发现得到。
如果使用私有的构造器,当你尝试去new的时候编译器就会马上阻止你当前的 *** 作。
你可能觉得如果是自己用的没所谓,但是当你过两个星期再看回你的代码,没有了这个私有的构造器,可能连你自己都会疑惑——“为啥不能通过new来使用这个对象呢?”

1
题目要求是protected(受保护的),不是private(私有的)。
2
要在类外使用private的方法和属性,必须用反射(可能还需用到泛型)。而这肯定不是这个题的要求,所以,将你的private改成protected就行了。
protected的属性和方法可以在本类,本包中的其它类,以及其它包中的子类中被访问。

可以被私有化。用的比较多的是单例模式中, 你可以去网上搜索一下单例模式
构造函数特点:
构造函数的名字必须和类名完全相同,构造函数不能有
返回值,就是void 也不要写,构造函数不可以被子类继承
构造函数可以重载但是不可以被子类覆盖。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13339481.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-17
下一篇 2023-07-17

发表评论

登录后才能评论

评论列表(0条)

保存