内部类中的属性和方法的访问

内部类:

内部类的分类:

成员内部类

局部内部类

匿名内部类

静态内部类

一个类的内部,另外定义了一个类,那么内部的这个类,被称为内部类。

如果非静态的外部类中定义了一个静态的内部类,那么这个静态的内部类中可以定义静态的成员变量和成员方法,也可以定义非静态的成员方法和非静态的成员变量。

但是在非静态的内部类中不可以定义静态的成员变量和静态的成员方法。

内部类的静态成员和静态方法、和非静态的成员方法非静态的成员变量的访问

package Weeks03.days04_qianfeng.Test01;
​
public class Outter {
​
    private int nums=100;
    static int nums1=400;
    int nums2=500;
    public static void show(){
        System.out.println("This is a Outter static method");
    }
​
    public void show01(){
        System.out.println("This is a Outter method");
    }
​
​
    public /*static*/ class Inner{
​
        int a=200;
        //static int b=300;
        public /*static*/ void showInner(){
            System.out.println("This is a Inner static method");
​
            /*int nums = new Outter().nums;
            System.out.println(nums);*/
        }
        public void showInner01(){
            System.out.println("This is a Inner method");
        }
​
    }
}
package Weeks03.days04_qianfeng.Test01;
​
public class Test {
    public static void main(String[] args) {
        Outter outter=new Outter();
        System.out.println("outter.nums2="+outter.nums2);
        outter.show01();
        System.out.println("+++++++++++++++++++");
​
        //Outter.Inner inner=new Outter.Inner();
​
        Outter.Inner inner = new Outter().new Inner();
​
        int a = inner.a;
        System.out.println(a);
        inner.showInner01();
        System.out.println("inner.a="+inner.a);
        inner.showInner01();
​
        System.out.println("======================");
​
        System.out.println(Outter.nums1);
        Outter.show();
​
        System.out.println("+++++++++++++++++++++");
​
       /* System.out.println(Outter.Inner.b);
        Outter.Inner.showInner();*/
​
        System.out.println("***************************");
​
        //Outter.Inner inner1 = new Outter.Inner();
​
        //Outter.Inner inner1=new Outter.Inner();
​
       /* inner1.showInner01();
        System.out.println(inner1.a);*/
​
​
​
​
    }
}

如果内部类是非静态的内部类,那么在此类中不能定义静态的属性和方法

如果内部类是静态的内部类,那么在此类中可以定义静态的属性和方法,也可以定义非静态的属性和方法。

Outter.java

package Weeks03.days04_qianfeng.Test02;
​
public class Outter {
    private int a=10;
    static int b=20;
    public static void show1(){
        System.out.println("This is a static Outter method");
    }
​
    public void show2(){
        System.out.println(this.a);
        System.out.println("This is a Outter method");
    }
​
​
    public static class Inner{
        static int c=30;
        int d=40;
​
        public static void show3(){
            System.out.println("This is a static Inner method");
        }
​
        public void show4(){
            System.out.println("This is a Inner method");
        }
    }
}

DemoTest.java

package Weeks03.days04_qianfeng.Test02;
​
public class DemoTest {
    public static void main(String[] args) {
        /**
         * 如果访问外部类的非静态的属性和方法时,则利用的是对象来进行访问
         */
​
        Outter outter=new Outter();
        outter.show2();
​
        System.out.println("**********************");
        /**
         * 如果想要访问外部类的静态的属性和方法时,则利用的是类来进行访问
         */
​
        System.out.println(Outter.b);
        Outter.show1();
        System.out.println("**********************");
​
        /**
         * 如果想要访问静态内部类的静态的属性和方法时,则首先是要利用类来访问该静态内部类,
         * 其次是利用类来进行对内部类的静态的属性和方法进行访问
         */
        //Outter.Inner.show3();
        //System.out.println(Outter.Inner.c);
        System.out.println("**********************");
​
        /**
         * 如果想要访问静态内部类的非静态的属性和方法时,则首先要利用类来访问该静态内部类,
         * 其次是利用对象来进行内部类的非静态的属性和方法的访问。
         */
        Outter.Inner inner=new Outter.Inner();
        System.out.println(inner.d);
        inner.show4();
        /**
         * 如果想要访问非静态的内部类中的非静态的属性和方法时,则首要要利用对象来访问该非静态的内部类
         * 其次时利用对象来进行内部类的非静态的属性和方法的访问
         */
​
       /* Outter.Inner inner1 = new Outter().new Inner();
        inner1.show3();
        inner1.show4();
        System.out.println(inner1.c);
        System.out.println(inner1.d);*/
​
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值