Java中set/get和toString的使用方法是什么
创始人
2024-12-21 20:42:26
0次

一、构造函数

构造函数的最大作用就是创建对象时完成初始化,当我们在new一个对象并传入参数的时候,会自动调用构造函数并完成参数的初始化。如下:

public class Test01 {  private String name;  //有参构造函数  public Test01(String name) {    this.name = name;  }  public static void main(String[] args) {    Test01 t=new Test01("Wade");    System.out.println(t.name);  }}

运行结果是“Wade”

插一句,插入构造函数快捷键:alt+insert,Constructor(构造函数)

这就说明在我们创建Test01对象时,会自动调用构造函数完成初始化,这时程序中的name属性就成了Wade。上面说到构造函数是为了在new对象传入参数后完成属性的初始化。但是 ,为什么我程序中不写构造函数依然可以完成初始化。

1.如果不写构造函数,程序会自动生成一个无参数无操作的构造函数(默认的,隐藏)。

2.如果写了构造函数,则自定义构造函数会覆盖无参数构造函数。

3.如果只写了有参数的构造函数,且不存在无参数的构造函数,将不能以 new XXX(); 这样的方式实例化对象,在实例化对象代码中,new XXX("***"); 括号中的参数必须与构造函数的参数保持一致,否则报错。(当然你也可以生成对象后通过他们的set、get方法进行赋值。)

所以,比较稳妥也是较常用的方式是在java类中同时定义无参构造函数和有参构造函数,代码如下:

public class Test01 {  private String name;  //有参构造函数  public Test01(String name) {    this.name = name;  }  //无参构造函数  public Test01() {  }  public static void main(String[] args) {    //既可以调用有参构造函数实例化对象    Test01 t=new Test01("Wade");    //又可以调用有参构造函数实例化对象    Test01 t1=new Test01();    System.out.println(t.name+","+t1.name);  }}

运行结果是“Wade,null”

这样在实际使用中会非常方便的。

二、set()/get()方法

我们先来看看set和get这两个词的表面意思,set是设置的意思,而get是获取的意思,顾名思义,这两个方法是对数据进行设置和获取用的。

然后我们来了解一下JAVA面向对象编程中的封闭性和安全性。封闭性即对类中的域变量进行封闭操作,即用private来修饰他们,如此一来其他类则不能对该变量访问。这样我们就将这些变量封闭在了类内部,这样就提高了数据的安全性,当我们想要操作这些域变量怎么办呢?我们可以通过两种方法,第一中即通过public方式的构造器(或称构造函数),对象一实例化就对该变量赋值。第二种就是通过上面提到的set和get方法,这里我举一个特定的例子,我定义一个Person类,该类中有name、age这两个私有域变量,然后我定义setname()、getname()、setage()、getage()这四个方法,通过这四个方法来实现对name和age的操作。这样一来,我不用直接对Person类中的域变量操作,而是通过set和get方法间接地操作这些变量,这样就能提高域变量的安全性,同时又保证了域变量的封装型。

现在以上述代码为例,添加set/get方法

同样使用快捷键:alt+insert,Getter and Setter

public class Test01 {  private String name;  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }  //有参构造函数  public Test01(String name) {    this.name = name;  }  //无参构造函数  public Test01() {  }  public static void main(String[] args) {    //既可以调用有参构造函数实例化对象    Test01 t=new Test01("Wade");    //又可以调用无参构造函数实例化对象    Test01 t1=new Test01();//使用set()方法给属性赋值    t.setName("CP3");//传统方式赋值    t1.name="Rose";//使用get()方法获取属性值    System.out.println("t:"+t.getName()+","+"t1:"+t1.name);//在同一个类中,t.getName()和t.name效果是一样的,但如果不是同一个类,属性是私有的,就只能使用t.getName(),set()方法也是一样的。  }}

运行结果是“t:CP3,t1:Rose”

这就是java编程语言的封装思想,希望大家好好理解。

三、toString()方法

Object类具有一个toString()方法,你创建的每个类都会继承该方法。它返回对象的一个String表示,并且对于调试非常有帮助。然而对于默认的toString()方法往往不能满足需求,需要覆盖这个方法。toString()方法将对象转换为字符串。

将上述代码最后加上

System.out.println(t.toString());System.out.println(t1.toString());

运行结果是

全限定名@地址首地址Test01@6d6f6e28Test01@135fbaa4

这是什么呢?是对象的地址值,但这不是我们需要的信息,我们想要对象的各种属性值,所以需要重写toString()方法。

同样使用快捷键:alt+insert,toString()

public class Test01 {  private String name;  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }  //有参构造函数  public Test01(String name) {    this.name = name;  }  //无参构造函数  public Test01() {  }//重写toString()方法,可以自定义  @Override  public String toString() {    return "Test01{" +        "name='" + name + '\'' +        '}';  }  public static void main(String[] args) {    //既可以调用有参构造函数实例化对象    Test01 t=new Test01("Wade");    //又可以调用无参构造函数实例化对象    Test01 t1=new Test01();    //使用set()方法给属性赋值    t.setName("CP3");    //传统方式赋值    t1.name="Rose";    //使用get()方法获取属性值    System.out.println("t:"+t.getName()+","+"t1:"+t1.name);    //在同一个类中,t.getName()和t.name效果是一样的,但如果不是同一个类,属性是私有的,就只能使用t.getName(),set()方法也是一样的。    System.out.println(t.toString());    System.out.println(t1.toString());  }}

运行结果是

t:CP3,t1:RoseTest01{name='CP3'}Test01{name='Rose'}

这样就得到我们想要的信息了,这就是重写toString()在java类中的基本用法了。

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...