面向对象特征之一:封装:
有时候我们需要对用户输入的属性进行限制,加入一些限制条件,不能直接给属性赋值,需要通过方法来给属性赋值,比如(setxxx).同时我们需要避免用户再使用对象.属性的方式对属性进行赋值,则需要将属性声明为“private",这就体现了封装性。
封装性的体现:
不对外暴露私有的属性:我们将类的属性”private"同时提供方法去限制赋值操作(setxxx),然后再提供方法去查看 (getxxx) 。不对外暴露私有的方法。不对外暴露的构造器(单例模式)如果不希望类在包外被调用,可以设置成缺省。
拓展:
不仅有上述属性的封装,还有方法的封装(供类内部使用),单例模式…
封装的具体体现:
1.权限修饰符:
从小到大排列: private, 缺省, protected, public.
2.4种权限可以用来类的内部结构:属性、方法、构造器、内部类
3.具体的,4种都可以用来修饰类的内部结构:属性、方法、构造器、内部类
但是修饰类 的话只能使用缺省、public
package com.myobjectoriented.nonworking;
public class Encapsulation {
private int ages;//隐藏属性
private String names;//隐藏属性
private char sexs;//隐藏属性
public void setAges(int num) {//获取年龄
if(num>0&&num<130) {ages=num;}
else{System.out.println("请输入正确的年龄:");}
}
public int getAges() {//返回年龄
return ages;
}
public void setNames(String name) {
names=name;
}
public String getnames() {
return names;}
public void setSex(char sex) {
if(sex=='男'||sex=='女') {sexs=sex;}
else {System.out.println("请输入正确的性别:");}
}
public char getSexs(){
return sexs;
}
}
package com.myobjectoriented.nonworking;
public class EncapsulationText {
public static void main(String[] args) {
Encapsulation enca= new Encapsulation();
enca.setAges(53);
enca.setNames("Abraham");
enca.setSex('男');
System.out.println(enca.getAges());
System.out.println(enca.getnames());
System.out.println(enca.getSexs());
}
}