java封装或隐藏实例代码介绍|private\default\protected\public



java封装或隐藏实例代码介绍。面向对象三大特征指的是什么?为什么需要封装?

java三大特征:继承、封装、多态

封装(encapsulation)java为什么需要封装?封装的作用和含义?
看电视,只需要按一下开关和换台就可以了。有必要了解电视机内部的结构吗?有必要碰碰显像管吗?
制造厂家为了方便我们使用电视,方便我们开车,把复杂的内部细节全部封装起来,只给我们暴露简单的接口,比如:电源开关、比如:油门。具体怎么内部实现的,我们不需要操心。

需要让用户知道的暴露出来,不需要让用户了解的全部隐藏起来。这就是封装。

白话:该露的露,该藏的藏
专业:我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。
编程中封装的具体意义
便于调用者调用。
良好的封装,便于修改内部代码,提高可维护性。
良好的封装,可进行数据完整性检测,保证数据的有效性。
使用访问控制符,实现封装
à范围越来越大

 

同一个类
同一个包中
子类
所有类
private
*
default(即不加修饰符的时候)
*
*
protected
*
*
*
public
*
*
*
*

 


封装的使用细节
1. 属性一般使用private.(除非本属性确定会让子类继承并且使用)
提供相应的get/set方法来访问相关属性. 这些方法通常是public,从而提供对属性的读取操作。 (注意:boolean变量的get方法是用:is开头!)
2. 一些只用于本类的辅助性方法可以用private,希望其他类调用的方法用public。

封装实例代码:
package cn.bjsxt.oop.encapsulation01;
public class Man {
private String name;
private String id;
private boolean man;
public static int cc;
public static final int MAX_SPEED = 120;
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public boolean isMan() {
return man;
}
public void setMan(boolean man) {
this.man = man;
}
}

package cn.bjsxt.oop.encapsulation01;
public class Test01 {
private String str;
protected void print(){
String s = str;
System.out.println(“Test01.print()”);
}
}

class Test001 extends Test01 {
public void pp(){
super.print();
}
public static void main(String[] args) {
Test01 t = new Test01();
t.print();
}
}
package cn.bjsxt.oop.encapsulation01;
public class Test02 {
public static void main(String[] args) {
Test01 t = new Test01();
t.print();
}
}

package cn.bjsxt.oop.encapsulation02;
import cn.bjsxt.oop.encapsulation01.Test01;
public class Test0001 extends Test01 {
public void ttt(){
super.print();
print();
}

public static void main(String[] args) {
Test0001 t = new Test0001();
t.print();
}
}

package cn.bjsxt.oop.encapsulation02;
import cn.bjsxt.oop.encapsulation01.Test01;
public class Test03 {
public static void main(String[] args) {
Test01 t = new Test01();
// t.print();
}
}