栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

内部类的一些东西,一起月薪过万

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

内部类的一些东西,一起月薪过万

目录

内部类概述

内部类的定义格式

内部类的访问特点

成员内部类

在类中的成员位置(类中方法外):成员内部类

在类中的局部位置(类中方法内):局部内部类

匿名内部类


内部类概述

内部类:就是在一个类中定义一个类,举例:在一个类A的内部定义一个类B,类B就被称为内部类

内部类的定义格式
public class 类名{
    修饰符 class 类名{

    }
}

public class Outer{
    public class Inner{
    }
}

内部类的访问特点

内部类可以直接访问外部类的成员,包括私有成员

外部类要访问内部类的成员,必须创建对象

class  Outter{
    private  int num =1;
    class Inner{
     public void show(){
         int num2 = 2;
         System.out.println(num);
     }
    }//在Inner类的同级外部创建一个方法new一个Inner对象
    public  void method(){
        Inner inner = new Inner();
        inner.show();
    }
}
public class InnerclassDemo {
    public static void main(String[] args) {
//new一个Outter对象调用上面创建对象的方法
        Outter outter = new Outter();
        outter.method();
    }
}

成员内部类

按照内部类在类中定义的位置不同,可以分为如下两种形式

在类中的成员位置(类中方法外):成员内部类
class Outer{
    private int num = 2;
    class Iner{
        int num = 3;
        public void show(){
            System.out.println(num);
            System.out.println(new Outer().num);
        }
    }
}
public class InerclassText {
    public static void main(String[] args) {

        Outer.Iner o  = new Outer().new Iner();
        o.show();
    }
}

这里需要注意的是,如果我们在outer类中创建的是private类型的iner类,这里我们就不能用上面这种调用方式,就必须像上面一样,在outer类中new一个iner对象去访问,再在测试类中new outer对象去实现,

class Outer{
    private int num = 2;

    private class Iner{
        int num = 3;
        public void show(){
            System.out.println(num);
            System.out.println(new outer().num);
        }
    }
    public void method(){
        Iner in = new Iner();
        in.show();
    }
}
public class InerclassText {
    public static void main(String[] args) {
        Outer out = new Outer();
        out.method();
    }
}

在类中的局部位置(类中方法内):局部内部类

局部内部类是在方法中定义的类,所以外界是无法直接使用的,需要在方法内部创建对象并使用该类可以直接访问外部类的成员,也可以访问方法内的局部变量

匿名内部类

前提:存在一个类或者接口,这里的类可以是具体类也可以是抽象类,是局部内部类的一个特殊形式,需要在方法里面去写

格式:

new 类名或者接口名{
    重写方法;
};
new Inter{
    public void show(){}
};

本质:是一个继承了该类或者实现了该接口的子类匿名对象        

public class Outter2 {
    public void method() {
        new Inner2() {
            @Override
            public void show() {
                System.out.println("这是匿名内部类的调用");
            }
        }.show();
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709271.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号