构造器与封装
一、构造器与封装
用法:构造器+setxxx()
维护限制条件,避免在使用构造器的时候跳过该限制条件
public Person(){}
//有三个属性的构造器
public Person(String name, int age, double salary) {
setName(name);//等价于this.
setAge(age);
setSalary(salary);
}
二、练习与总结
package com.stu;
/*
题目:
1.Account类要求具有属性:姓名(长度为2位3位或4位)、余额(必须>20)、密码(必须是六位),
如果不满足,则给出提示信息,并给默认值(程序员自己定)
2.通过setxxx的方法给Account的属性赋值
3.在AccountTest中测试
*/
public class Account {
private String name;
private double sy;
private String password;
//提供两个构造函数
public Account() {}
public Account(String name, double sy, String password) {
this.setName(name);
this.setSy(sy);
this.setPassword(password);
}
//姓名(长度为2位3位或4位)
public void setName(String name){
if(name.length()>=2&&name.length()<=4){
this.name = name;
}else{
System.out.println("姓名(长度为2位3位或4位),默认为smi");
this.name="smi";
}
}
public void setSy(double sy){
if(sy>20){
this.sy = sy;
}else{
System.out.println("余额不足20");
}
}
public void setPassword(String password){
if(password.length()==6){
this.password = password;
}else{
System.out.println("密码必须是6位,默认是000000");
this.password="000000";
}
}
public String getPassword() {
return password;
}
public double getSy() {
return sy;
}
public String getName() {
return name;
}
//显示账号信息
public void info() {
//可以增加权限的校验,如,项目中有管理员和用户等角色
System.out.println("账号信息 name=" + name + " 余额" + sy + " 密码" + password);
// if(){
// System.out.println("账号信息 name="+name+"余额"+sy+"密码"+password);
// }else{
// System.out.println("你无权查看...");
// }
}
}
package com.stu;
public class AccountTest {
public static void main(String[] args) {
Account account = new Account();
Account account1 = new Account();
account.setName("smith");
account.setSy(60000);
account.setPassword("12456");
account.info();
//System.out.println("姓名="+account.name+"\t余额="+account.sy+"\t密码="+account.password);
}
}
我的总结:
1.有参构造器和无参构造器的区别
Account account = new Account();
括号里面没有参数是无参构造器
这里要使用setxxx方法来配合使用添加属性
有参构造函数,直接把对应的属性写在括号里
2.属性改为私有属性,可以对其添加限制和业务逻辑
私有属性:/System.out.println("姓名="+account.name+"\t余额="+account.sy+"\t密码="+account.password);
account.name不能用
private String name;
private double sy;
private String password;
3.不对的话,要给出相应的提示,提示信息为限制条件说明
public void setName(String name){
if(name.length()>=2&&name.length()<=4){
this.name = name;
}else{
System.out.println("姓名(长度为2位3位或4位),默认为smi");
this.name="smi";
}
}
*/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理