1.封装
封装是一种面对对象的设计思想,隐藏对象内部的复杂性,只能通过已经定义的接口来访问数据
1.1.封装的优点
*格式更加规范,代码更加易读
*set方法可以在赋值前对参数进行验证
*get方法可以返回标准化的数据,进行格式化
*实现了读写分离
*使用受限制的访问权限修饰 ,可以使得外部类中不能直接使用属性
1.2.set&get方法
set方法:赋值时进行验证
public void set属性名(参数类型 参数名){}
public void setName(String name){}
get方法:返回数据给他人时,进行格式化输出
public 返回值类型 get属性名(){return属性名}
public String getName(){
return name
}
1.3.访问权限修饰符
封装通过访问权限修饰符public,private,protected来实
public 公开的 表示在项目中都可以访问
private 私有的 表示只能在本类中可以访问
protected 受保护的
省缺不写 默认的 表示只能在本包中可以访问
2.创建一个类User
2.1.创建一个方法setName()实现名字验证
public class User {
private String name;
public void setName(String name) {
if(name!=null&&name.length()>1){
for(int i=0;i<name.length();i++){
char c=name.charAt(i);
if(c==' '){
System.out.println("姓名不能出现空格");
return;
}
}this.name=name;
}else{
System.out.println("姓名不符合要求(为null或长度小于2)");
}
}
public static void main(String[] args) {
User user1=new User();
user1.setName("张 三");
System.out.println(user1.name);
user1.setName(null);
System.out.println(user1.name);
user1.setName("张三");
System.out.println(user1.name);
}
}
运行结果
代码中name被访问权限修饰符private修饰,只能在本类中调用
user1.name="李四";
System.out.println(user1.name);
若在另一个类中调用,则报错
public class Use {
public static void main(String[] args) {
User user2=new User();
user2.name="李四";
System.out.println(user2.name);
}
}
只能用setName()方法进行名字设置,但此时名字怎样输出呢,下面使用getName()方法来实现返回名字的功能
2.2.创建一个方法getName()实现名字输出
User类中创建getName()
public String getName(){
return name;
}
Use类中调用
public class Use {
public static void main(String[] args) {
User user2=new User();
user2.setName("李四");
System.out.println(user2.getName());
}
}
运行结果
3.多个属性
一个对象多个属性同时修改
User类中创建方法getUser()和setUser()
private int age;
private int no;
public void setUser(String name,int age,int no){
this.name=name;
this.age=age;
this.no=no;
}
public void getUser(){
System.out.println("姓名:"+name);
System.out.println("年龄:"+age);
System.out.println("学号:"+no);
}
public class Use {
public static void main(String[] args) {
User user2=new User();
user2.setName("李四");
System.out.println(user2.getName());
user2.setUser("李四",18,1);
user2.getUser();
}
}
运行结果