封装与隐藏

封装:

有时候我们需要对用户输入的属性进行限制,加入一些限制条件,不能直接给属性赋值,需要通过方法来给属性赋值,比如(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());

}
}

 

posted @ 2021-03-26 09:57  gAbraham  阅读(67)  评论(0)    收藏  举报