类的属性的处理
-
一般使用private访问权限---类的属性就是要不给别人使用
-
提供相应的get/set方法来访问相关属性,这些方法通常是public修饰的,以提供对属性的赋值与读取操作---boolean变量的get方法是is开头!
-
一些只用于本类的辅助性方法可以用Private修饰,希望其他类调用的方法用public修饰
实例:
/**
* 测试封装和访问修饰符
* @author Lucifer
*/
public class Person4 {
/*
碰到属性全部私有
*/
private int id;
private String name;
private int age;
private boolean man;
//想让别人访问私有的属性就提供相应的set和get方法
/*
对name提供set方法,这样外部想去设置name的值直接调用方法
*/
public void setName(String name){
this.name = name;
}
//设置age
public void setAge(int age){
if(age>=0 && age <= 130){
this.age = age;
}else {
System.out.println("Please input real age");
}
}
/*
高内聚
*/
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
/**
* 测试封装
* @author Lucifer
*/
public class TestEncapsulation {
private static Person4 p4;
public static void main(String[] args) {
Human h = new Human();
// age = 13; //不可以对age赋值,因为age被封装起来了。age再其他类里面不可见
h.name = "Lucifer";
h.height = 170; //同一个包下的属性可以用
p4 = new Person4();
/*
因为age被四有了访问不到只能通过setAge进行访问---方法进行访问
通过private把属性变成私有并且暴露一个方法,利用这个方法对外控制
*/
p4.setAge(-14);
System.out.println(p4.getAge()); //上面设置了-14设置不进去,默认是0
// p4.getName();
}
}
上诉是JavaBean的封装实例,只有简单的封装没有复杂的逻辑判断
package cn.Lucifer.oo;
import javax.sound.midi.SysexMessage;
/**
* 测试JavaBean封装
* @author Lucifer
*/
public class Test2 {
public static void main(String[] args) {
Person2 p1 = new Person2();
p1.setName("Lucifer");
p1.setAge(-1000);
System.out.println(p1);
Person2 p2 = new Person2("James",300);
System.out.println(p2);
}
}
//写一个类,拥有两个private属性
class Person2{
private String name;
private int age;
//写一个构造器
public Person2(){
}
//这是个公共的构造器
public Person2(String name, int age){
this.name = name;
//不能this.age直接赋值,因为age被private修饰符修饰了
}
//写一个修改name的set方法
public void setName(String name){
this.name = name;
}
//写一个返回name的get方法
public String getName(){
return this.name;
}
/*
注意getName方法名要和前面setName方法里面的形参一致
*/
//写一个修改age的set方法并且判断年龄是否合法
public void setAge(int age){
if(age > 130 || age < 0){
System.out.println("Please input really age");
}else {
this.age = age;
}
}
//写一个返回age的get方法
public int getAge(){
return this.age;
}
//重写toString