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变量】 局部变量、成员变量(类变量,实例变量)、方法参数传递机制
41 0
|
6月前
|
存储 Java
【面试题精讲】Java成员变量与局部变量的区别?
【面试题精讲】Java成员变量与局部变量的区别?
|
8月前
|
Java
继承与隐藏:Java中父类成员变量的神秘禁忌
本文将解释为什么Java设计了这样的规则,探讨与此相关的继承和多态的概念,并说明如何在子类中访问和使用父类的成员变量。
|
4月前
|
Java
【零基础学Java】—成员变量和局部变量(九)
【零基础学Java】—成员变量和局部变量(九)
|
2月前
|
缓存 Java 编译器
Java 构造函数与修饰符详解:初始化对象与控制权限
Java 构造函数 是一种特殊的类方法,用于在创建对象时初始化对象的属性。它与类名相同,并且没有返回值类型。 构造函数的作用: 为对象的属性设置初始值 执行必要的初始化操作
54 0
|
8月前
|
存储 Java 数据挖掘
第一季:6成员变量和局部变量【Java面试题】
第一季:6成员变量和局部变量【Java面试题】
66 0
|
4月前
|
Java
【Java this关键字】如何使用以及注意点 访问成员变量,访问成员方法,构造方法内调用构造方法
【Java this关键字】如何使用以及注意点 访问成员变量,访问成员方法,构造方法内调用构造方法
|
4月前
|
Java
Java面向对象编程,构造函数和方法的区别是什么?
Java面向对象编程,构造函数和方法的区别是什么?
43 2
|
4月前
|
Java
【Java练习题】Java 程序的输出 | 第十四套(构造函数)
【Java练习题】Java 程序的输出 | 第十四套(构造函数)
43 0
|
8月前
|
Java API
Java反射(通过反射获取构造函数、方法、属性)
1.通过反射获取构造函数,2.通过反射获取方法,3.通过反射调用成员属性
79 0