学到了构造方法私有化。
当方法中的那些成员变量私有化时
还能用 类名 名 = new 类名(数据类型 数据,数据类型 数据,数据类型 数据,);这种方法去赋值吗?
我就知道用 set 和 get一个一个来
#在java中,一般来说有三种种方式对 类的私有变量设值
如有不明白,欢迎交流
可以链式呀
在set方法中 void更换成对应属性的数据类型,返回值写this,这样就可以set完一个直接.出来下一个
可以的,添加个有参构造 方法
我记得上学期学习java中访问私有成员变量有两种方法,第一种是用set(),get()方法,第二种用父类来new一个对象,利用这个对象调用父类的私有成员,格式如下:
父类 父类对象=new 父类();
父类对象.私有成员变量;
首先回答你的问题:在其他类中是不能的
私有化构造方法的目的是为了让其他类无法去调用该类的构造方法,这点是毋庸置疑。
私有化构造方法有什么用呢,按照我的理解给你举一个例子吧(如果有兴趣的话可以去看一看构造器模式,也可以关注我,后续会更新到)
学生类
/**
* @Author ChenJiahao(程序员五条)
* @Date 2021/9/2 23:48
*/
public class Student {
private String name;
private Integer age;
public Student() {
}
private Student(String name, Integer age) {
this.name = name;
this.age = age;
}
public Student createStudent(){
// 在本类中可以调用私有的有参构造
return new Student("程序员五条",18);
}
public static Student buildStudent(){
// 在本类中可以调用私有的有参构造
return new Student("静态方法初始化",18);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
测试类
/**
* @Author ChenJiahao(程序员五条)
* @Date 2021/9/2 23:51
*/
public class Main {
public static void main(String[] args) {
// 下面一行代码报错,因为有参构造已经被私有化了,这里调不到
// Student student = new Student("程序员五条",18);
// 使用set get
Student student = new Student();
student.setName("是五条呀");
student.setAge(18);
System.out.println(student); // Student{name='五条呀', age=18}
// 调用方法去初始化(变相的调用了私有化的有参构造)
Student student1 = new Student().createStudent();
System.out.println(student1); // Student{name='程序员五条', age=18}
// new对象麻烦,就直接用静态方法去创造
Student student2 = Student.buildStudent();
System.out.println(student2); // Student{name='静态方法初始化', age=18}
}
}
最后
你可以思考一下,如果把无参构造也变成私有的该去怎么调用鸭