-
面向对象有一个法则:信息隐藏
- 类的成员属性,是私有的private;
- 类的方法是公有public的,通过方法修改成员属性的值 -
打个比方:朋友再熟悉,也不会到他抽屉直接拿东西,而是通过他的公开接口来访问、修改东西。
class InfoHiding {
private int id;
public InfoHiding(int id2){
id = id2;
}
public int getId(){
return id;
}
public void setId(int id2){
id = id2;
}
}
public class InfoHidingTest{
public static void main(String[] args){
InfoHiding obj = new InfoHiding(100);
obj.setId(200);
System.out.println(obj.getId());
}
}
运行结果
200
注意:当类设置public时,public设置的那个类必须与文件名相同
- 类成员是私有private的
- get和set方法是公有public的,统称为getter和setter
- 外界对类成员的操作只能通过get和set方法
- 可以用Java IDE快速生成
this 负责指向本类中的成员变量
class InfoHiding2 {
private int id;
public InfoHiding2(int id){
this.id = id;//在这个构造函数里面,形参的优先级更高
//this.id指向本类中的成员变量
}
public int getId(){
return id;
}
// public void setId(int id){
// this.id = id;
// }
}
public class InfoHidingTest{
public static void main(String[] args){
InfoHiding2 obj = new InfoHiding2(100);
//obj.setId(200);
System.out.println(obj.getId());
}
}
class MyPairNumber {
private int m;
private int n;
public int getM() {
return m;
}
public void setM(int m) {
this.m = m;
}
public int getN() {
return n;
}
public void setN(int n) {
this.n = n;
}
public MyPairNumber() {
this(0, 0);
}
public MyPairNumber(int m) {
this(m, 0);
}
public MyPairNumber(int m, int n) {
this.m = m;
this.n= n;
}
public int sum() {
return this.add(m,n); //return add(m,n); also ok
}
public int add(int a, int b){
return a+b;
}
}
public class ThisTest {
public static void main(String[] args) {
MyPairNumber obj = new MyPairNumber(5);
System.out.println(obj.sum());
}
}