构造器、toString()方法、get、set方法解析

构造器的作用

1.创建对象

People p = new People();

p指向People类的空参构造器

2.初始化对象信息
当一个类的实例对象刚产生时,这个类的构造方法就会被自动调用,我们可以在这个方法中加入要完成初始化工作的代码。这就好像我们规定每个“人”都有姓名和年龄这两个属性,我们就可以在“人”的构造方法中加入“姓名”和“年龄”的程序代码,于是每个“人”一出生就会有一个“姓名”和“年龄”,程序就不必再在每个人刚出生时一个一个地告诉他们的“姓名”和“年龄”了。

class People{
//属性
String name;
int age;
 Public People(String name ,int age){
		name=name;
		age =age;
}

构造器注意说明

1 如果没有显式的定义类的构造器,系统则会默认提供一个空参构造器

2 语法格式:

权限修饰符 类名( 形参列表) {
语句

如:

 public student(int age,String name){
 System.out.println("我是个学生");
 }

3 一个类中定义的多个构造器,彼此构成重载
在这里插入图片描述
上面声明了四个带参数的构造器,他们之间的关系为重载

4 一旦我们定义了显示的构造器,系统则不会再默认提供空参构造器

5 一个类中,至少会有一个构造器


toString()方法

将对象转成字符串,方便打印

在输出一个对象的时候,默认就是调用这个对象的toString方法

如果项目里需要输出一个对象的时候,就可以重写toString方法。

举例:

public class Fish {
	private int money;
	private String type;

	public Fish(int money, String type) {
		super();
		this.money = money;
		this.type = type;
	}

	public int getMoney() {
		return money;
	}

	public void setMoney(int money) {
		this.money = money;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}
}

public class I {
	public static void main(String[] args) {
		Fish fish = new Fish(12, "鲤鱼");
		System.out.println(fish);
	}
}

当Fish类没有重写toString()方法时,打印的是该方法返回的是"类名@hashCode值"形式的字符串
在这里插入图片描述
当重写了toString()后:


public class Fish {
	private int money;
	private String type;

	public Fish(int money, String type) {
		super();
		this.money = money;
		this.type = type;
	}

	public int getMoney() {
		return money;
	}

	public void setMoney(int money) {
		this.money = money;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	@Override
	public String toString() {
		return "Fish money= " + money + ", type=" + type + "。";
	}

}

就可以打印出
在这里插入图片描述
重写了toString()这个方法的用途就是为了方便操作,在文件操作里面可用可不用。

比如在刚刚例子中,我把主方法修改一下,依旧可以达到重写了toString()的效果

public class I {
	public static void main(String[] args) {
		Fish fish = new Fish(12, "鲤鱼");
		System.out.println(fish.getMoney()+" "+fish.getType());
	}
}

在这里插入图片描述


get、set方法

当我们对类中的域变量进行封闭操作,即用private来修饰他们时,其他类则不能对该变量访问。而其他类想要操作这些域变量时,我们可以通过两种方法:

第一种即通过public方式的构造器(或称构造函数),对象一实例化就对该变量赋值。

比如:

public class Fish {
	private int money;
	private String type;

	public Fish(int money, String type) {
		this.money = money;
		this.type = type;
	}

	@Override
	public String toString() {
		return "Fish money= " + money + ", type=" + type + "。";
	}
}

public class I {
	public static void main(String[] args) {
		Fish fish = new Fish(12,"鲤鱼");
		System.out.println(fish);
	}
}

第二种就是通过上面提到的set和get方法

通过set方法来设置属性,get方法来获取属性。

比如:


public class Fish {
	private int money;
	private String type;

	public int getMoney() {
		return money;
	}

	public void setMoney(int money) {
		this.money = money;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}
}


public class I {
	public static void main(String[] args) {
		Fish fish = new Fish();
		fish.setMoney(12);
		fish.setType("鲤鱼");
		System.out.println(fish.getMoney() + " " + fish.getType());
	}
}

通过定义setMoney()、getMoney()、setType()、getType()这四个方法,来实现对Money和Type的操作。这样一来,我不用直接对Fish类中的域变量操作,而是通过set和get方法间接地操作这些变量,这样就能提高域变量的安全性,同时又保证了域变量的封装型

参考:
https://blog.csdn.net/shero1604/article/details/77882740

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值