美文网首页
java se 成员内部类

java se 成员内部类

作者: 起名字真难难难 | 来源:发表于2020-02-16 12:26 被阅读0次

    一个类内部包含另一个类
    身体与心脏
    分类:
    1、成员内部类
    2、局部内部类(匿名内部类

    1、成员内部类

    修饰符 class 类名称{
          修饰符  class  类名称{
                ...
        }
    }
    

    注:
    内用外可直接访问,访问private可直接访问
    外用内需借助内部类对象

    public class Practice {
        private int num1=1;
        public void method1(){
            //外用内借助内部类对象
            Inner inner=new Inner();
            System.out.println(inner.num2);
        }
        public class Inner{
            private int num2=2;
            //内用外可随意访问
            public void method2(){
                System.out.println(num1);
            }
        }
    }
    
    如何使用成员内部类?

    (1)间接方式:外部类方法中使用内部类,main调用外部类方法

    public class MyBody {
        public class MyHeart{
            public void methodIn(){
                System.out.println("内部方法");
            }
        }
        public void methodOut(){
            MyHeart heart=new MyHeart();
            heart.methodIn();
        }
    }
    
    public class Demo01InnerClass {
        public static void main(String[] args) {
            MyBody body=new MyBody();间接方法
            body.methodOut();
        }
    }
    

    (2)直接方法:

    外部类.内部类 对象名=new 外部类().new内部类();
    
    public class MyBody {
        public class MyHeart{
            public void methodIn(){
                System.out.println("内部方法");
            }
        }
        private int num1=5;
        public void methodOut(){
        }
    }
    
    public class Demo01InnerClass {
        public static void main(String[] args) {
            MyBody.MyHeart heart=new MyBody().new MyHeart();
            heart.methodIn();
        }
    }
    
    内部类重名问题
    public class Outer {
        int num=1;
        public class Inner{
            int num=2;
            public void method(){
                int num=3;
                System.out.println(num);
                System.out.println(this.num);
                System.out.println(Outer.this.num);
            }
        }
    }
    

    外部类名称.this.变量名

    相关文章

      网友评论

          本文标题:java se 成员内部类

          本文链接:https://www.haomeiwen.com/subject/zispfhtx.html