看视频教学,感觉有点混乱,整理一下:
(还是不会用MDeditor。。。)
/*慕课网的三点笔记
1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
*/
package exercise0804;
public class Exercise080401 {
void outer(){
System.out.println("这是外部方法");
}
public static class Inner{ //内部类是静态声明
public void innerShow(){
System.out.println("我是内部静态类的非静态方法");
//静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
new Exercise080401().outer();
}
public static void innerShow1(){
System.out.println("我是内部静态类的静态方法");
}
}
public static void main(String[] args) {
outshow1();
Exercise080401 n=new Exercise080401();
System.out.println();
n.outshow3();
//对于静态内部类的调用方式,和调用外部类相似
}
public void outshow3(){
System.out.println("我是外部类的非静态方法");
System.out.print("调用静态内部类的静态方法:");
Inner.innerShow1();
System.out.print("调用静态内部类的非静态方法:");
Inner out=new Inner();
out.innerShow(); //外部非静态方法调用静态内部类的非静态方法需要实例化
}
public static void outshow1(){
System.out.println("我是外部类的静态方法");
System.out.print("调用静态内部类的静态方法:");
Inner.innerShow1();
System.out.print("调用静态内部类的非静态方法:");
Inner out=new Inner();
out.innerShow();
}
}
package exercise0804;
public class Exercise080401 {
public class Inner{ //内部类无声明
public void innerShow(){
System.out.println("我是内部类的非静态方法");
}
public static void innerShow1(){//报错,给parent添加static或者remove前面的static。
System.out.println("我是内部类的静态方法");
}
}
public static void main(String[] args) {
outshow1();
Exercise080401 n=new Exercise080401();
System.out.println();
n.outshow3();
}
public void outshow3(){
System.out.println("我是外部类的非静态方法");
Inner out=new Inner();
System.out.print("调用静态内部类的非静态方法:");
out.innerShow(); //外部非静态方法调用内部类的非静态方法需要实例化
}
public static void outshow1(){
System.out.println("我是外部类的静态方法");
Exercise080401 c=new Exercise080401();
Inner out=c.new Inner();
System.out.print("调用内部类的非静态方法:");
out.innerShow();
}
}