JAVA- 内部类

 

复制代码
public class InnerDemo {
    
    class Inner{
        public void innerMethod(){
            System.out.println("this is inner method");
        }
    }
    public Inner getInnerInstance(){
        return this.new Inner();
    }
    
    public static void main(String[] args) {
        //获取内部对象,这是第一种
        InnerDemo innerDemo = new InnerDemo();
        Inner inner = innerDemo.new Inner();
        
        //获取内部对象,这是第二种
        InnerDemo innerDemo1 = new InnerDemo();
        Inner inner1 = new InnerDemo().getInnerInstance();
    
    }
复制代码

成员内部类

定义了成员内部类后必须使用外部类对象来创建内部类对象,而不能世界去new 一个内部类对象,即

对象名 = 外部类对象.new ()

一般来说,编译内部类后生成的类文件是以“外部类名称$内部类名称.class” 这种形式命名的,但在Java语言中,只要存在$,就应将其替换为 “ . ” 。

public class InnerDemo{
    class Inner{
     
    }
}

成员内部类,只要外部这个类还在内存当中,这个成员内部类就会驻留在内存。

局部内部类

复制代码
public class InnerDemo1 {
    public void call(){    //这是一个方法
        class Inner{       //这是一个方法里的局部内部类
            
        }
    }
}
复制代码

局部内部类随着方法的弹栈而被销毁。

匿名内部类

定义匿名内部类的时候,必须要有接口或抽象类。这个匿名内部类还得写成一个局部的匿名内部类。

这个是非匿名内部类实现一个接口的代码:

复制代码
interface Inner{
    void call();
}
public class InnerDemo1 {
    public void say(){
        class InnerImpl implements Inner{
            @Override
            public void call() {
            }
        }
    }
   
}
复制代码

 

静态内部类

复制代码
public class InnerDemo {
   static String name; //InnerDemo.name
   static class Inner{ //获取到该静态内部类构造器InnerDemo.Inner(),构造器获取实例对象new InnerDemo.Inner();
        public void function(){
            System.out.println("this is inner method");
        }
   }
}
复制代码

 

复制代码
  class Outer{ //定义外部类

String info="Welcome,everybody"; //定义外部类的私有属性

class Inner{ //定义内部类
public void print(){ //定义内部类的方法
System.out.println(info); //直接访问外部类的方法
}
}
public void fun(){ //定义外部类的方法
new Inner().print(); //通过内部类的匿名对象调用内部类的print()方法
}
}
public class OuterInner {

public static void main(String[] args) {
// TODO Auto-generated method stub
Outer out = new Outer();
Outer.Inner in = out.new Inner();
in.print();

}

}

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论