静态或者非静态成员内部类的各种情况的调用

这篇博客详细探讨了Java中内部类的调用,包括静态和非静态成员内部类的使用。对于非静态成员内部类,即使有静态方法也需要通过外部类实例来调用。静态成员内部类可以直接通过外部类进行调用。此外,还讨论了局部内部类、匿名内部类以及它们在静态和非静态方法中的应用,并提供了多个示例进行说明。

1.静态成员内部类 

举例:

public class Outer01 {
    public static class Inter{
        public static void eat() {
            System.out.println("造他就完了");
            }
        }
    }
输出:Outer01.Inter.eat();

2.非静态成员内部类
    如果成员内部类是非静态类加静态方法的话 依然可以直接  外部类.内部类.方法 去调用这个方法
    但是如果内部类是非静态类加非静态方法的话  就需要实例化非静态成员内部类  new 外部类().new 内部类().方法
        非静态类加静态方法举例:

public class Outer02 {
    public  class Inner{
        public static void eat() {
            System.out.println("造他就完了");
            }
        }
    }
输出:Outer02.Inner.eat();

        非静态类加非静态方法举例:

public class Outer03 {
    public  class Inner{
        public  void eat() {
            System.out.println("造他就完了");
            }
        }    
    }
输出:new Outer03().new Inner().eat();

3.利用方法调用非静态成员内部类中的方法

举例:

public class Outer04 {
    public  class Inner{
        public  void eat() {
            System.out.println("造他就完了");
            }
        }
        public void innereat() {
            new Inner().eat();       //在外部类下建立一个非静态方法去直接调用上方内部类里                                                                                          
                }                                                                   的方法     
        }
    输出:new Outer04().innereat();        //然后在外边直接调用此方法即可

4.静态方法调用及局部内部类静态方法
    举例:

public class Outer05 {
            public static void innereat() {
                class Inner {
                    public static void eat() {
                        System.out.println("造他就完了");
                        }
                }Inner.eat();
            }
        }
    输出:Outer05.innereat();

5.静态方法调用及局部内部类非静态方法    
    举例:

public class Outer06 {
            public static void innereat() {
                class Inner {
                    public void eat() {
                        System.out.println("造他就完了");
                        }
                }new Inner().eat();     //这两个区别就是 方法变成了非静态   变成非静态不要慌 new他就完了
            }
        }
    输出:Outer06.innereat();

6.非静态方法调用及局部内部类非静态方法    
    举例:

public class Outer07 {
            public void innereat() {
                class Inner {
                    public void eat() {
                        System.out.println("造他就完了");
                        }
                }new Inner().eat();     
            }
        }
    输出:new Outer07().innereat();        //还是那句话   变成非静态不要慌 new他上面那个类就完了

7.局部内部类匿名对象
    内部类里面没有方法  在通过实例化的过程中 直接写出并调用方法 叫局部内部类匿名对象
    举例:

public class Outer08 {
        public void innereat() {
            class Inner {
                }
            new Inner() {
                public void eat() {
                    System.out.println("造他就完了");
                    }
                }.eat();
            }
        }

8.匿名内部类
    在写匿名方法的时候 这个实例化的对象 必须是要存在的  
    这个时候我们可以输入new Object  因为Object  是个超类 相当与最大的类  这种写法我们称之为匿名内部类
    举例:

public class Outer09 {
            public void innereat() {
                new Object() {
                    public void eat() {
                        System.out.println("造他就完了");
                    }
                }.eat();
            }
        }
            

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值