Java之内部类

作者: 蜗先生 | 来源:发表于2017-05-24 23:22 被阅读13次

内部类也相当于类中的成员,一般是私有的,当外部类对象拥有一个对象成员,且这个对象成员仅属于这个外部类,不会被其他类使用时,定义为内部类。例如Person有Heart,Heart仅被Person使用,就可以定义为内部类,且为私有不会被其他类使用。

Java中的内部类创建对象方法:外部类.内部类 引用 = 外部类对象.内部类对象
Inter是Outer的内部类,那么直接创建内部类对象Outer.Inner inner = new Outer().Inner();

先创建外部类对象,再用外部类对象创建内部类对象
Outer outer = new Outer();
Inner inner = outer.new Inner();

外部类如何访问内部类成员?
1.如果内部类是static修饰的,直接用内部类调用非私有的属性和方法
2.如果内部类不是static修饰的,在外部类中要创建内部类对象,才可用对象调用内部类成员

public class Outer {
    class Inner {
        // 定义一个变量10
        int num = 10;
        // 显示该变量的方法
        public void showNum() {
            System.out.println(num);
        }
    }

    public void showInner() {
        // 创建内部类对象
        Inner in = new Inner();
        // 显示内部类的属性
        System.out.println(in.num);
        // 调用内部类的方法
        in.showNum();
    }
}

内部类如何访问外部类成员?
1.外部类成员与内部类成员不重名时,内部类中直接用外部类的成员

public class Outer2 {
    // 定义一个变量10
    int num = 10;
    class Inner {
        // 显示外部类的属性
        public void show() {
            System.out.println(num);
        }
    }
}

2.外部类成员与内部类成员重名时,内部类访问内部类成员用this.获取,内部类访问外部类成员用外部类.this.获取

public class Outer3 {
    // 定义外部类变量
    int num = 10;

    class Inner {
        // 定义内部类变量
        int num = 20;

        public void show() {
            // 定义局部变量
            int num = 30;
            // 输出局部变量
            System.out.println(num);
            // 输出内部类变量
            System.out.println(this.num);
            // 输出外部类变量
            System.out.println(Outer3.this.num);
        }
    }
}

如何继承内部类?
子类继承内部类,当创建子类对象时,构造方法自动调用内部类的构造方法,内部类相当于外部类中的成员,所以要在其他类中使用内部类,必须要先有外部类对象,正常情况下调用父类的构造方法是super(),此处调用内部类的构造方法与super()类似,即Outer.super(),表明是Outer类中的父类。

public class InnerTest extends Out.Inner{
    //内部类初始化之前,外部类必须初始化
    public InnerTest(Out out) {
        //调用Out类中的父类的构造方法
        out.super();
        System.out.println("继承公有内部类");
    }

    public static void main(String[] args) {
        Out out = new Out();
        InnerTest it = new InnerTest(out);
    }
}

相关文章

  • java之内部类(InnerClass)详解

    参考文章 java之内部类(InnerClass)----非静态内部类、静态内部类、局部内部类、匿名内部类

  • Java之内部类

    内部类也相当于类中的成员,一般是私有的,当外部类对象拥有一个对象成员,且这个对象成员仅属于这个外部类,不会被其他类...

  • java之内部类

    一、分类: 1、静态内部类 2、成员内部类 3、局部内部类 4、匿名内部类 二、静态内部类 1、静态内部类可以等同...

  • Java基础之内部类

    什么是内部类?为什么要使用内部类?  内部类是指在类的内部可以定义另一个类。内部类可以申明成public或priv...

  • java基础之内部类

    内部类:类里面再声明类 1》默认内部类 class Outer{ private int a = 12; clas...

  • Java基础之内部类

    1、内部类分类: 成员内部类 局部内部类 匿名内部类 静态内部类 2、成员内部类 1.概念: 定义在一个类内部的类...

  • Java基础之内部类

    该项目源码地址:https://github.com/ggb2312/JavaNotes/tree/master/...

  • Java系列之内部类

    今天温习一下 Java 中的内部类,内部类一般有如下几种:静态内部类、成员内部类、匿名内部类和方法内部类,下文中将...

  • Java基础之内部类(InnerClass)

    一、内部类介绍 内部类:将一个类的定义放在另一个类的定义内部。 内部类是个编译时的概念,一旦编译成功后,它就与外围...

  • java面向对象之内部类

    1.内部类的定义把类定义在另一个类的内部,该类就被称为内部类。2.内部类的访问规则a:可以直接访问外部类的成员,包...

网友评论

    本文标题:Java之内部类

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