------ android培训、java培训、java基础学习技术总结、期待与您交流! ----------
内部类:定义在类里面的类
1.内部累访问规则
内部累可以直接访问外部类中的成员,包私有的
外部类要访问内部类,必须减累内部类对象
内部类之所以可以访问外部类的成员,是因为内部累持有外部类的一个引用 格式 外部类名.this
2.访问格式
当内部类建立在外部类成员位置上,而且非私有,可以在外部其他类中,可以直接定义内部累对象
格式:
外部类名.内部类名 变量名=new 外部类对象.内部类对象;
当内部类在成员位置,可以被修饰符修饰
比如private,将内部类在外部类中进行封装
static,静态内部类只可以访问外部类的静态成员,出现了访问局限
*在外部其他类中如何直接访问static内部类的非静态成员呢?
*new Outer.Inner().function();
*在外部其他类中,如何直接访问内部累的静态成员呢?
*Outer.Inner,function();
*内部类中定义静态成员,那么该内部类必须是静态类
*当外部类中的静态方法访问内部类时,内部类也必须是静态的。
*
*当描述事物是,事物的内部还有事物,可以用内部类来描述
*因为内部事物在使用外部事物的内容
*当内部事物想要直接访问外部事物的内容时,将内部事务定义在外部事物中,代码是最优的。
*创建内部类时,把内部类封装在外部类中,提供一个外部访问的方法。不允许外部其他类直接访问。
示例1如下:
class Outer{
int num=4;
void method(){
Inner in=new Inner();
in.function();
System.out.println("outer:"+num);
}
class Inner{
int num=5;
void function(){
int num=6;
System.out.println("innner:"+Outer.this.num);
}
}
}
public class InnerDemo {
public static void main(String[] args) {
Outer out=new Outer();
out.method();
Outer.Inner in=new Outer().new Inner();
}
}
示例2如下:
class Outer2{
static class Inner{
static void show(){
System.out.println("innner2:");
}
}
public static void method(){
Inner.show();
}
}
public class InnerDemo2 {
public static void main(String[] args) {
Outer2.method();
}
}
示例3如下:
class Body{
private class Heart{
public void method(){
System.out.println("跳动!");
}
}
public void show(){
new Heart().method();
}
}
public class InnerDemo {
public static void main(String[] args) {
new Body().show();
}
}