你的位置:首页 > 软件开发 > Java > 第五课:类的封装性

第五课:类的封装性

发布时间:2011-12-30 11:00:48
观察下面的代码:class Person{ String name ; int age ; public void tell(){ System.out.println("姓名:" + name +",年龄:" + age) ; }}public class SimpleDemo{ public static void main(String args[] ...

  观察下面的代码:

class Person{	String name ;	int age ;	public void tell(){		System.out.println("姓名:" + name +",年龄:" + age) ;	}}public class SimpleDemo{	public static void main(String args[]){		Person per = new Person() ;		per.name = "张三" ;		per.age = -30 ;		per.tell() ;	}}

  如果现在的年龄为负数,并不会影响程序的执行。但是从实际的生活角度来讲,没有一个人的年龄是-30岁。所以这样的数据就不应该设置上去。

  因为现在类中的所有操作都是对外部可见的,可以直接访问的。此时就可以通过风合租昂性来解决此问题,在Java中封装性有很多的体现,但是最简单的体现就是加入“private”关键字。

    封装属性:private 数据类型 属性名称 = 默认值 ;

    封装方法:private 返回值类型|void 方法名称(参数列表) 

  那么下面按照此操作将类中的属性进行封装:

    private String name ;

    private int age ;

  这是编译会发生错误,提示name和age属性是使用private关键字声明的,所以无法在外部直接访问。证明现在的属性是安全的,可以自己保护了。

  但是,现在代码是安全了,但是无法操作,那么该怎么办呢?

  所以,给出一个重要的概念:只要属性就必须进行封装,被封装的属性通过setter及getter方法设置和取得,例如:name属性,setter:setName(),getter:getName()

class Person{	private String name ;	private int age ;	public void tell(){		System.out.println("姓名:" + name +",年龄:" + age) ;	}	public void setName(String n){		name = n ;	}	public void setAge(int a){		age = a ;	}	public String getName(){		return name ;	}	public int getAge(){		return age ;	}}public class SimpleDemo{	public static void main(String args[]){		Person per = new Person() ;		per.setName("张三") ;		per.setAge(3) ;		per.tell() ;	}}

  此时,已经可以访问类中的name和age属性,是通过间接的方式完成,但是此时并没有对输入的内容进行检查。

public void setAge(int a){		if(a>=0&&a<100){		age = a ;		}	}

  在访问本类中其他方法时,为了保证方法是本类中定义的,可以在方法前加上this关键字:this.方法(),就是调用本类的方法。

  最终代码:

class Person{	private String name ;	private int age ;	public void tell(){		System.out.println("姓名:" + this.getName() +",年龄:" + this.getAge()) ;	}	public void setName(String n){		name = n ;	}	public void setAge(int a){		if(a>=0&&a<100){		age = a ;		}	}	public String getName(){		return name ;	}	public int getAge(){		return age ;	}}public class SimpleDemo{	public static void main(String args[]){		Person per = new Person() ;		per.setName("张三") ;		per.setAge(30) ;		per.tell() ;	}}

 

 

【2011-11-28】

原标题:第五课:类的封装性

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录