内部类介绍

内部类

实例内部类

1.不能在内部类创建静态的成员变量和方法(对于内部类来说,和普通的成员变量是同一等级的,也会受到限定符的约束,静态可能在类加载的时候就执行)通俗讲就是内部类未加载,但是却试图在内存中创建static的属性和方法。
在这里插入图片描述
但是这里还有点特殊,在内部类的实例变量中加个final就不会报错,因为加了final是定义常量,在编译的时候就已经确定了。但是方法里面加final依然会报错(语法规定)。
在这里插入图片描述
2:如何对内部类的实例化。(如何获取实例内部类对象呢?)
两种写法:
写法一:外部类名.内部类名 对象名=new 外部类构造方法.new 内部类构造方法
Tea.Stu stu=new Tea().new Stu();
写法二:先创建外部类对象,然后我们要的内部类类型是已知(外部类名.内部类名)。。。 Tea tea=new Tea();
。。类型 对象名=外部类对象.new 内部类构造方法
Tea.Stu stu1= tea.new Stu();

public class test {
    public static void main(String[] args) {
  Tea.Stu stu=new Tea().new Stu();  //外部类名.内部类名 对象名=new 外部类构造方法.new 内部类构造方法
        Tea tea=new Tea();   //先创建外部类对象,然后我们要的内部类类型是已知(外部类名.内部类名)
                              //类型 对象名=外部类对象.new 内部类构造方法
        Tea.Stu stu1=tea.new Stu();
        stu1.fun();
  stu.fun();
    }
}

class Tea{
    class Stu{

       public static final int a=10;//加了final就没有默认的初值,必须得赋初值
        public void fun(){
           // public static final int b=10; 语法规定不行
            System.out.println("hello");
        }
    }
}

3:成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)。
如果外部类与内部类有重名的就优先访问自己,自己没有的才去访问外部类的。
如果我非要在重名的时候访问外部类的呢?
方法一:创建外部类的对象,通过这个对象访问。
方法二:拿到外部类的this。外部类名.this.要访问的成员
反之呢?
外部类要想访问内部类成员和方法得依靠对象(想要内部类对象又得先创建外部类对象)

public class test1 {
    public static void main(String[] args) {

    }
}
class caixukun{

    int age=80;
    public void jin(){

        System.out.println("唱跳rap 篮球");
        caixukun cai =new caixukun();
        caixukun.ikun kun=cai.new ikun();
        System.out.println(kun.age);//21
    }


    class ikun{
        int age=21;
        public void jin1(){

            System.out.println("ikun只会打篮球");
            System.out.println("坤坤年纪"+caixukun.this.age);//80
            System.out.println("ikun年纪"+age);//21
            jin();//直接调用
        }


    }
}

静态内部类

1:静态内部类的对象的创建不依靠外部类的对象
2:不能使用外部类的非static成员变量或者方法,(因为在没有外部类对象的情况也能创建静态内部类对象。外部类的非静态成员必须依靠对象)如果非要访问,只能创建外部类对象,通过对象去访问。

静态内部类是可以有静态的成员和方法
在这里插入图片描述

在这里插入图片描述

局部内部类

局部内部类:把类创建在方法里,我们基本不使用,所以我这里就不涉及这个内容。

匿名内部类

可以通过这篇文章了解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

20计科-廖雨旺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值