zoukankan      html  css  js  c++  java
  • 成员内部类的访问

    1:成员内部类

    成员内部类是外部类的成员,必须通过外部类来访问

    格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象

    package com.imooc;
    
    class Outer{
        public int num = 10;
        class Inner{
            public void method(){
                System.out.println("num = "+num);
            }
        }
    }
    public class Demo1 {
        public static void main(String[] args){
            Outer.Inner oi = new Outer().new Inner();
            oi.method();
        }
        
    }

     一般内部类不能让外部类访问,可以用private修饰

    package com.mingming;
    class Body{
        private class Heart{
            public void operator(){
                System.out.println("heart");
            }
        }
        public void method(){
            Heart h = new Heart();
            h.operator();
        }
    }
    public class Demo {
        public static void main(String[] args){
            Body b = new Body();
            b.method();
        }
    }

    注意:

    静态内部类访问的外部类对象必须用静态修饰!!!!(不管使用它里面的静态方法还是非静态方法都能访问外部累得静态成员)
    静态内部类(外部类的内部类是静态的类)的方法可以是静态方法也可以是非静态方法

    类用静态修饰之后是不能用外部对象访问的

    private为了保证数据的安全性
    static为了便于访问数据

    外部类和内部类同名的时候可以这样访问

    package com.mingming;
    class Outer{
        public int num = 10;
        class Inner{
            public int num = 20;
            public void show(){
                int num = 30;
                System.out.println(num);
                System.out.println(this.num);
                //通过外部类名限定this对象!!!!!!!!!!!!!
                System.out.println(Outer.this.num);
                
            }
        }
    }
    public class Demo {
        public static void main(String[] args){
            Outer.Inner oi = new Outer().new Inner();
            oi.show();
        }
    }

     2:匿名内部类

    package com.mingming;
    interface Inter{
        public abstract void show();
        public abstract void show2();
    }
    class Outer{
        public void method(){
            Inter i = new I
    package com.mingming;
    interface Inter{
        void show();
    }
    class Outer{
        public static Inter method(){
            return new Inter(){//不要忘记这里有一对括号!!!!!!!!
                public void show(){
                    System.out.println("show");
                }
            };
        }
    }
    public class Demo {
        public static void main(String[] args){
            Outer.method().show();//不要忘记method后面有一对括号
        }
    }
    
    
    
    nter() {
                public void show(){
                    System.out.println("show");
                }
                public void show2(){
                    System.out.println("show2");
                }
            };
            i.show();
            i.show2();
        }
    }
    public class Demo {
        public static void main(String[] args){
            Outer o = new Outer();
            o.method();
        }
    }
  • 相关阅读:
    Rails中使用图表(ChartJs)显示数据
    Ubuntu下sublime无法输入中文问题完美解决
    ruby--$:.unshift File.expand_path('..', __FILE__)(转载)
    消息闪现
    Rails中编写自己的任务
    Rails定时任务
    rails中设置配置信息 读取配置信息
    在lib下编写的自己的类需要用到model内相关方法
    rails_ajax 验证验证码
    rails添加验证码
  • 原文地址:https://www.cnblogs.com/rain-1/p/5105244.html
Copyright © 2011-2022 走看看