数据隐藏
在定义一些特性时,有必要设置一这些特性的可见性,即哪些特性对外部是可见的,哪些属性是外部不可见的
private可以把属性隐藏。其他人不可见,只有本类内成员可见
代码示例
public class ThisTest
{
public String name = "李四";//实例变量 归对象所有
public void say(String name)
{
System.out.println(name); //李四
String name1 = this.name;
System.out.println(name1); //张三
}
public static void main(String[] args)
{
ThisTest test = new ThisTest();
String name = test.name;
System.out.println(name);
test.say("张三");
}
}
public class ThisTest2
{
String name;
public void say(String name1)
{
//ThisTest2 test = new ThisTest2();
//test.eat();
this.eat(); //一个方法中调用另一个方法利用this.
eat(); //this可以省略
System.out.println(this.name); //当前name不止一个,有两个选择,需要自行指定
}
public void eat()
{
System.out.println("吃中午饭");
}
public static void main(String[] args)
{
ThisTest2 test = new ThisTest2();
test.say("吃饭");
}
}
public class ThisTest3
{
public static void main(String[] args)
{
/* Cat cat = new Cat();
cat.say();
Cat cat1 = new cat("波斯猫");
cat1.say();
Cat cat2 = new cat(4);
cat2.say();
*/
Cat cat3 = new Cat("蓝短");
System.out.println(cat3);
cat3.say();
}
}
class Cat
{
public String name;
public String type;
// public String type = 4;
public int leg;
//构造器
public Cat()
{
}
public Cat(String type)
{
//用this调用构造器的时候一定要放在第一行
//当前构造器中调用下一个构造器,且不会产生新的对象
this(4);
System.out.println(this);
this.type = type;
// this.leg = 4;
}
public Cat(int leg)
{
this.leg = leg;
//看看那是否为同一个对象
System.out.println(this);
}
public void say()
{
//只有构造器才可用this调用其他构造器对当前对象进行初始化,普通方法不能这样使用
// this(4);
System.out.println(this.name+":"+this.type+":"+this.leg);
}
}
但可以用set 和 get来设置哪些可用
set 用来赋值
get 用来获取值
代码示例
public class BuyHouse
{
private String name;
private double money;
public void setName(String name)
{
this.name = name;
}
public String getName()
{
if(name != "中介机构")
return "就不告诉你名字";
return this.name;
}
public void setMoney(double money)
{
this.money = money;
}
public double getMoney()
{
return this.money;
}
}
//---------------------------------------------------------------------------------------
public class BuyHouseTest
{
public static void main(String[] args)
{
BuyHouse buy = new BuyHouse();
buy.setName("李四");
buy.setMoney(2000000);
String name = buy.getName();
double money = buy.getMoney();
System.out.println(name + ":" + money);
}
}
封装
1.隐藏代码的实现细节
2.统一用户的调用接口
3.提高稳定性