Java中类的内部成员之五: 内部类

简介: Java中类的内部成员之五: 内部类

Java中类的内部成员之五: 内部类

@[toc]


内部类这个东西不常用,做了解


初步理解
  • 当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内 部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构最好使用内部类。
  • 在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类。
  • Inner class一般用在定义它的类或语句块之内,在外部引用它时必须给出完 整的名称。(Inner class的名字不能与包含它的外部类类名相同)
  • 分类:
  1. 成员内部类:(static成员内部类和非static成员内部类)
  2. 局部内部类:(不谈修饰符)、匿名内部类

内部类的分类

成员内部类(静态、非静态) vs 局部内部类(方法内、代码块内、构造器内)

package day3.InterClass;

//内部类的分类:成员内部类(静态、非静态) vs 局部内部类(方法内、代码块内、构造器内)
public class InterClassTest {
}
class Person {
    //静态成员内部类
    static class dog {
    }
    //非静态成员内部类
    class bird {
    }
    //局部内部类(方法里)
    public void goTo() {
        class AA {
        }
    }
    //局部内部类(代码块里)
    {
        class BB {
        }
    }
    //局部内部类(构造器里)
    public Person() {
        class CC {

        }
    }
}

成员内部类
  1. 作为外部类的成员
  • 调用外部类的结构(属性、方法等等)
  • 可以被static修饰
  • 可以被四种不同的权限修饰符修饰
  1. 作为一个类:
  • 类内可以定义属性、方法、构造器等
  • 可以用final修饰,表示此类不能被继承了,不使用final就可以继承
  • 可以被abstract修饰,表明这个类不能被实例化

附加
  • 如何实例化成员内部类的对象?
 //创建dog实例(静态成员内部类)
        Person.dog dog = new Person.dog();
        //创建bird实例(非静态的成员内部类)
//        Person.bird bird=new Person.bird();//这里不能像上面那样子写了,因为这个bird是一个非静态内部类
        Person p = new Person();
        Person.bird bird=p.new bird();
  • 如何在成员内部类中去区分调用外部类的结构?

(bird是Person类的内部类,这里只放部分代码,详细看注释)

class bird {
    String name;
    public bird(){

    }
    public void sing(){
        System.out.println("鸟唱歌");
    }
    public void display(String name){//当有重名的时候就需要这么去调用,如果不重名就直接输入就可以
        System.out.println(name);//方法的形参
        System.out.println(this.name);//内部类的属性
        System.out.println(Person.this.name);//外部类的属性
    }

}
目录
相关文章
|
8天前
|
设计模式 Java 编译器
Java中的内部类(如果想知道Java中有关内部类的知识点,那么只看这一篇就足够了!)
Java中的内部类(如果想知道Java中有关内部类的知识点,那么只看这一篇就足够了!)
|
12天前
|
Java
在 Java 中,类是一种定义对象的模板,它包含数据成员(字段)和方法。
在 Java 中,类是一种定义对象的模板,它包含数据成员(字段)和方法。
|
26天前
|
Java 编译器
24. 【Java教程】内部类
24. 【Java教程】内部类
15 2
|
5天前
|
Java
Java内部类相关内容总结和解读
Java内部类相关内容总结和解读
|
6天前
|
存储 Java
Java 五种内部类演示及底层原理详解
Java 五种内部类演示及底层原理详解
6 0
|
30天前
|
Java 程序员
Java的内部类与匿名类的技术性文章
Java的内部类与匿名类的技术性文章
20 1
|
1月前
|
Java
Java内部类(成员内部类、静态内部类、局部内部类、局部内部类)
Java内部类(成员内部类、静态内部类、局部内部类、局部内部类)
16 3
|
1月前
|
Java
一文搞懂内部类(Java)
Java内部类包括成员内部类、静态内部类、局部内部类和匿名内部类。成员内部类能访问外部类的所有成员,可以通过外部类实例创建。静态内部类与外部类实例无关,可直接访问外部类的静态成员。局部内部类仅限方法内使用,能访问最终变量。匿名内部类无名称,常用于一次性实现接口或抽象类,需外部类成员为final。
13 1
|
16天前
|
安全 Java
比较java枚举成员使用equal还是==
比较java枚举成员使用equal还是==
9 0
|
1月前
|
存储 Java API
【JAVA学习之路 | 提高篇】[内部类与常见API]String类
【JAVA学习之路 | 提高篇】[内部类与常见API]String类