Java学习笔记day06——数据隐藏,封装

数据隐藏
    在定义一些特性时,有必要设置一这些特性的可见性,即哪些特性对外部是可见的,哪些属性是外部不可见的
    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.提高稳定性
    

猜你喜欢

转载自blog.csdn.net/gangangan0001/article/details/88056188