内部类
Posted crabdumplings
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内部类相关的知识,希望对你有一定的参考价值。
内部类
Java允许将一个类A声明在另一个类B中,则类A为内部类,类B为外部类
分类
成员内部类(静态或非静态)
作为外部类的成员,调用外部类的结构
- 可以被static修饰
- 可以被四种不同权限修饰
- 作为类
- 类内可以定义属性、方法、构造器等
- 可以被final修饰,表示此类不能被继承(不使用final可以被继承)
- 可以被abstract修饰,表示该类不能被实例化
局部内部类
- 在方法内、代码块内、构造器内
- 在局部内部类的方法中,如果调用局部内部类所在的声明方法中局部变量,要求此局部变量声明为final
代码实现
使用内部类
public class Test {
public static void main(String[] args) {
//静态成员内部类
Person.Sing s = new Person.Sing();
s.name = "殷志源";
s.show();
System.out.println("----------------");
//非静态成员内部类
Person p = new Person();
Person.Walk w = p.new Walk();
w.nickname = "丸子";
w.show();
//局部内部类
System.out.println("-------------");
p.eat();
}
}
class Person{
static class Sing{
String name;
public void show(){
System.out.println("静态成员内部类");
System.out.println(name + "在唱歌");
}
}
class Walk{
String nickname;
public void show(){
System.out.println("非静态成员内部类");
System.out.println(nickname + "在走路");
}
}
public void eat(){
String foodname = "南煎丸子";
class Play{
final String gameName = "消灭星星";
public void show(){
System.out.println("局部内部类");
System.out.println("在玩的游戏名字" + gameName);
}
}
Play p = new Play();
String gameName = p.gameName;
p.show();
System.out.println("喜欢的食物名字是" + foodname);
}
}
运行结果
使用
实例化成员内部类的对象
- 创建静态成员内部类
- 创建非静态成员内部类
在成员内部类中区分调用外部类的结构
以上是关于内部类的主要内容,如果未能解决你的问题,请参考以下文章