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);//外部类的属性
    }

}
目录
相关文章
|
2月前
|
Java 调度 开发者
Java 神秘新成员 —— 虚拟线程究竟是什么?它又能解开哪些编程痛点之谜?
【8月更文挑战第23天】Java虚拟线程是一种轻量级执行线程,由Java运行时管理,相较于传统操作系统线程,其创建和管理成本更低。基于用户模式线程概念,Java应用程序无需依赖OS即可实现高度并发。虚拟线程数量可远超传统线程,有效提升多核处理器利用率和并发性能。它解决了传统Java线程模型中创建成本高、调度开销大及I/O阻塞等问题,极大提高了程序的并发性和响应速度。
19 1
|
2月前
|
Java
【Java基础面试二】、个Java文件里可以有多个类吗(不含内部类)?
这篇文章讨论了Java文件中类的定义规则,指出一个Java文件可以包含多个类(不包含内部类),但其中最多只能有一个public类,且如果有public类,它的名称必须与文件名一致。
|
2月前
|
算法 Java
12 Java常用类(一)(内部类+object类+包装类)
12 Java常用类(一)(内部类+object类+包装类)
29 5
|
3月前
|
Java
Java进阶之内部类
【7月更文挑战第13天】Java内部类增进代码组织与封装,允许直接访问外部类成员,包括私有成员。主要有四种类型:成员、静态、局部和匿名内部类。匿名内部类常用于一次性实现接口或扩展类。内部类可隐藏实现细节,减少命名冲突,并在特定上下文中定义辅助类。示例展示了静态和非静态内部类如何在Shape类中封装Circle和Rectangle。使用内部类能提升代码可读性,但可能增加复杂性。
34 6
|
2月前
|
Java
【Java】内部类、枚举、泛型
【Java】内部类、枚举、泛型
|
3月前
|
Java 程序员
【Java探索之旅】继承概念_语法_父类的成员访问
【Java探索之旅】继承概念_语法_父类的成员访问
46 10
|
4月前
|
Java
一篇文章讲明白Java中内部类详解—匿名内部类
一篇文章讲明白Java中内部类详解—匿名内部类
52 2
|
4月前
|
设计模式 Java 编译器
Java中的内部类(如果想知道Java中有关内部类的知识点,那么只看这一篇就足够了!)
Java中的内部类(如果想知道Java中有关内部类的知识点,那么只看这一篇就足够了!)
|
4月前
|
Java
在 Java 中,类是一种定义对象的模板,它包含数据成员(字段)和方法。
在 Java 中,类是一种定义对象的模板,它包含数据成员(字段)和方法。
|
4月前
|
Java 编译器
24. 【Java教程】内部类
24. 【Java教程】内部类
24 2
下一篇
无影云桌面