JAVA:私有成员变量的调用 与 构造函数私有化 、构造函数保持成员变量私有性

简介: 私有成员变量的调用 与 构造函数私有化 、构造函数保持成员变量私有性的介绍

 如下代码,student类成员变量设置了私有化(即用private修饰属性),这样将变量封闭在类的内部中,为提高数据安全性的同时,其他类和对象也无法对其变量进行访问或调用了。

public class student

{

   private String name ;

   private int age;

}

我们可以通过两种方法对其变量进行调用:

第一,直接点击STS中自带的Generate Getters and Setters (即set()和get()方法 ),其中,set为给对象赋值的方法,而get则是取得变量值的方法

   public String getName()

   {

       return name;

   }

   public void setName(String name)

   {

       this.name = name;

   }

   public int getAge()

   {

       return age;

   }

   public void setAge(int age)

   {

       this.age = age;

   }

首先,方法设置为public,即可以被其他类和对象调用其方法;然后set()方法中 数据类型 为 void (没有返回值),用this关键字指全局变量的name,而调用该方法输入参数name(即右边的name),赋值给this.name,但单用set()方法无法返回其值,根本无法输出结果,只能输出该类的地址

如图:

image.gif

最后需要用get()方法为其获取并输出结果,同样设置了public,其数据类型根据实际情况设置为String,返回其String类型的值。

如图:image.gif

第二,用public修饰构造函数,传入name,age两个参数,即创造对象时就需拥有了其属性值

注意:构造函数的名称和类名完全相同

          构造函数没有返回值,也不需要返回值类型,所以输出结果需用到STS自带的Generate toString() 方法。

public stu(String name , int age)

   {

       this.name = name ;

       this.age = age ;

   }

   @Override

   public String toString()

   {

       return "" + name + "," + age + "";

   }

image.gif

构造函数私有化:

所以构造函数私有化,可以将构造函数中的public 用 private 修饰。同样这样构造函数只能在内部调用了。如果还是要将它对其进行外部调用呢?

不同的是,私有化构造函数需要在其内部创建一个对象并赋予属性值,通过用公共的方法获取其对象,而在外部去调用该方法,仅仅获取了该对象,无法达到赋予对象值的功能。

public class stu {

   private String name;

   private int age;

   

   static stu student = new stu("xiaoming", 18);  //在内部中创建一个对象并赋值属性

   private stu(String name , int age) //构造函数私有化

   {

       this.name = name ;

       this.age = age ;

   }

   

   public static stu getstudent() //创造一个公开的方法在内部获取对象

   {

       return student;

   }

   @Override

   public String toString()

   {

       return "" + name + "," + age + "";

   }

}

public class test {

   public static void main(String[] args)

   {

       stu s  = stu.getstudent();

       System.out.println(s);

   }

}

测试并输出结果:

image.gif

构造函数保持成员变量私有性:用公共的方法对成员变量进行访问或者能够对它进行赋值。

public class student

{

   private String name ;

   private int age public void setName(String name)

       {

           this.name = name;

       }

   public student()

       {

           setName(name);

       }

   public String toString()

       {

           return "name=" + name + "";

       }

}

目录
相关文章
|
4月前
|
Java
【Java基础面试三十四】、接口中可以有构造函数吗?
这篇文章讨论了Java中接口不能包含构造函数的原因,主要解释了接口中的成员变量默认是public static final类型的常量,不需要通过构造函数初始化,且接口本身不能被实例化,因此构造函数在接口中没有意义。
|
2月前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
7月前
|
存储 Java 数据库连接
Java语言成员变量深入解析
Java语言成员变量深入解析
|
2月前
|
Java 编译器
【编程基础知识】详解Java构造函数
构造函数是与类同名且不带返回值的特殊函数,用于对象初始化。它可以是无参或有参的,支持重载。若未自定义构造函数,编译器会提供默认的无参构造函数。子类构造函数会先调用父类的构造函数,确保父类对象先被创建。构造函数的主要作用是初始化对象的存储空间、调用父类构造函数和初始化成员变量。
31 0
|
3月前
|
Java 开发者
【Java编程新纪元】JDK 22:超级构造函数来袭,super(...) 前导语句改写编程规则!
【9月更文挑战第6天】JDK 22的超级构造函数特性是Java编程语言发展史上的一个重要里程碑。它不仅简化了代码编写,还提升了代码的可读性和维护性。我们有理由相信,在未来的Java版本中,还将有更多令人兴奋的新特性等待我们去发现和应用。让我们共同期待Java编程新纪元的到来!
|
4月前
|
Java 开发者
什么是 Java 中的构造函数链?
【8月更文挑战第21天】
41 1
|
6月前
|
存储 Java
java成员变量详解
java成员变量详解
|
5月前
|
安全 Java 程序员
【Java探索之旅】多态:向上下转型、多态优缺点、构造函数陷阱
【Java探索之旅】多态:向上下转型、多态优缺点、构造函数陷阱
47 0
|
6月前
|
安全 NoSQL Java
探索Java Optional类:构造器、成员变量与方法
探索Java Optional类:构造器、成员变量与方法
|
7月前
|
存储 缓存 Java
【Java开发指南 | 第六篇】Java成员变量(实例变量)、 类变量(静态变量)
【Java开发指南 | 第六篇】Java成员变量(实例变量)、 类变量(静态变量)
73 2