今天我们花3min学习一下成员内部类的常见修饰符,通过private确保数据的安全性,通过static确保访问的方便性。
那么私有后我们如何从外部调用他的operator方法呢?我们可以在其内部在定义一个method方法,在method方法中可以进一步校验是否符合条件,从而确保了数据的安全性。
接下来我们在main中调用:
输出:
然后我们先通过常规方法在main中调用showStatic:
但是,它可是static,必须要有不一样的地方,还真有:
都能成功输出:
外部类名.内部类名 对象名 = new 外部类名.new 内部类名();
成员内部类是静态的:
外部类名.内部类名 对象名 = new 外部类名.内部类名();
有了之前的基础,我们先学习private修饰内部类,现在先定义身体类和他的内部类心脏类,显然内部类心脏是不能随便让外部访问的,因此我们将其定义为私有。
class Body{
private class Heart{
public void operator(){
System.out.println("心脏搭桥手术.");
}
}
···
那么私有后我们如何从外部调用他的operator方法呢?我们可以在其内部在定义一个method方法,在method方法中可以进一步校验是否符合条件,从而确保了数据的安全性。
class Body{
//一般内部类不让外界直接访问
//private 为了数据的安全性
private class Heart{
public void operator(){
System.out.println("心脏搭桥手术.");
}
}
public void method(){
//if 校验
Heart h = new Heart();
h.operator();
}
···
接下来我们在main中调用:
public static void main(String[] args) {
Body b = new Body();
b.method();
···
输出:
心脏搭桥手术.
接下来我们学习static修饰内部类,
我们定义一个静态成员numStatic和一个静态内部类HeartStatic以及它的静态方法showStatic:
static int numStatic = 1;
//内部类 static 外部类的成员
//static 为了访问的方便性
public static class HeartStatic{
public static void showStatic(){
System.out.println(numStatic);
}
}
然后我们先通过常规方法在main中调用showStatic:
//外部类名.内部类名 对象名 = new 外部类名.内部类名();
Body.HeartStatic heartStatic = new Body.HeartStatic();
heartStatic.showStatic();
但是,它可是static,必须要有不一样的地方,还真有:
Body.HeartStatic.showStatic();
都能成功输出:
1
内部类用 static 修饰,可看成是外部类的成员,static 确保了访问的方便性。
ps:
成员内部类不是静态的:外部类名.内部类名 对象名 = new 外部类名.new 内部类名();
成员内部类是静态的:
外部类名.内部类名 对象名 = new 外部类名.内部类名();