• Java_内部类


    A:内部类

      在类中定义的类就是内部类

     B:内部类访问特点
       a:内部类可以直接访问外部类的成员,包括私有。原因是:他能获取到外部类名的引用      外部类名.this
       b:外部类要访问内部类的成员,必须创建对象。

       c:外部类名.内部类名 对象名 = 外部类对象.内部类对象;

          Outer.Inner in = new outer().new Inner()
       

    public class Demo1_InnerClass {
    	public static void main(String[] args){
            #创建类的对象
    		Outer.Inner in = new Outer().new Inner();
    		in.method();
    		
    	}
    }
    
    #定义外部类Outer以及内部类Inner
    class Outer{
         #外部类的私有成员变量
         private int num = 10; class Inner{ public void method(){ System.out.println(num); } } }

      

    注意一:如果内部类被私有,那么就得在外部类中提供一个调用私有类的方法

    public class Demo1_InnerClass {
        public static void main(String[] args){
    
            Outer o = new Outer();
            o.print();
            
        }
    }
    
    
    class Outer{
        private int num = 10;
    #内部类被私有化
        private class Inner{
            public void method(){
                System.out.println(num);
            }
        }
    #定义一个可以调用私有内部类的方法
        public void print(){
            Inner i = new Inner();
            i.method();
        }
    }

     注意二:如果内部类是静态的,调用方法直接是:外部类名.内部类名   对象名 =  外部类名.内部类对象(因为static修饰的可以直接用类名.调用),如果静态内部类里面的方法也是静态的,直接就用类名调用就可以了

    
    
    class Outer{
        private int num = 10;
        static class Inner{
            public void method(){
                System.out.println("method");
            }
         public static void print(){
             System.out.println("print");
       }
    
      }
    
    }
    
    
    public class Demo1_InnerClass {
        public static void main(String[] args){
        
            Outer.Inner oi = new Outer.Inner();
            oi.method();
         Outer.Inner.print();
        }
    }
    
    
    
    注意三:如果想直接访问外部类的成员变量,那么就是Outer.this

    class Outer {
      public int num = 10;
      class Inner {
        public int num = 20;
        public void show() {
          int num = 30;
          System.out.println(num);   #输出30,就近原则
          System.out.println(this.num);   #输出20,调用本类成员变量
          System.out.println(Outer.this.num);   #输出10,获取外部类引用
        }
      }
    }

     
    
    

     

  • 相关阅读:
    118. Pascal's Triangle
    697. Degree of an Array
    1013. Partition Array Into Three Parts With Equal Sum
    167. Two Sum II
    ol7 禁用mysql 自启动
    pgsql常用命令
    清空history 命令记录
    pgsql启动报错
    在rhel 7.4中安装glibc-devel-2.17-196.el7.i686包的过程详录
    postgresql-9.2 install
  • 原文地址:https://www.cnblogs.com/Wly-blogs/p/9609797.html
Copyright © 2020-2023  润新知