一,封装性
1,封装的产生目的
保护某些属性和方法不被外部看见
2,封装的实现
为属性和方法封装是通过关键字private声明的。
实现该属性的set和get方法,为外部所访问。
为属性封装 private 属性类型 属性名称 ;
为方法封装 private 方法返回值 方法名称(参数列表){ }
3,访问封装的内容
这些属性肯定是要表示出一些实际意义,那么这些意义的内容一定是由外部设定。
被封装的属性如果需要被访问,则需要编写set()和get()方法完成。
例如,现在有一个属性:private String name ;
set(设置):public void setName(String n)
get(取得):public String getName()
class Person
{
private String name ; //声明姓名属性
private int 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 void tell()
{
System.out.println("姓名: "+name+",年龄: "+age) ;
}
}
public class ClassDemo02
{
public static void main(String[] args)
{
Person per = new Person() ;//声明并实例化对象
per.setName("IronMan") ; //调用set()方法设置姓名
per.setAge(18) ; //调用set()方法设置年龄
per.tell() ;
}
}
以上代码可以访问封装的属性了,但是并没有加入检验措施。
如果年龄设置有问题,则就不能给属性赋值。
所以
set()方法中加入验证
get()方法中把内容简单取回即可
class Person
{
private String name ; //声明姓名属性
private int age ; //声明年龄属性
public void setName(String n)//设置姓名
{
name = n ;
}
public void setAge(int a) //设置年龄
{
if(a>=0&&a<=150)
{
age = a ;
}
}
public String getName()
{
return name ;
}
public int getAge()
{
return age ;
}
public void tell()
{
System.out.println("姓名: "+name+" , 年龄: "+age) ;
}
}
public class ClassDemo03
{
public static void main(String[] args)
{
Person per = new Person() ; //声明并实例化对象
per.setName("IronMan") ; //通过调用set()方法设置姓名
per.setAge(12); //调用set()方法设置年龄
per.tell() ; //输出内容
}
}