JAVA内部类

简介: 1.定义内部类,将一个类定义在另一个类内部。2.修饰符外部类只能使用public、default修饰内部类可以使用private、public、protect、default(即全部修饰符)修饰内部类可以直接访问外部类的属性和方法,包括private修饰的如果内外有同名,内调外,加上类名.this.方法或者属性名来调用:

1.定义

内部类,将一个类定义在另一个类内部。

2.修饰符

外部类只能使用public、default修饰


内部类可以使用private、public、protect、default(即全部修饰符)修饰


内部类可以直接访问外部类的属性和方法,包括private修饰的


如果内外有同名,内调外,加上类名.this.方法或者属性名来调用:

public class Outer {
    private int a=1;
    public class Inner{
        private int a=2;
        public void show(){
            System.out.println(Outer.this.a);
        }
    }
}

3.class

一个类中总共有几个类就会有几个.class文件,内部类的class文件使用外部类名加上$符号修饰

public class Outer{
    class inner{
    }
}

bb0b3e61def04889a2515cba314c8de9.png

4.实例化

内部类可以看作是外部类的一个成员,

在成员内部类中访问外部类的成员方法和属性:外部类名.this.成员方法(或者属性)

在内部类之外创建成员内部类的实例:外部实例对象名.内部类名  实例名 = new  内部类构造方法

class Outer {
    private int a=1;
    class Inner{
        private int a=2;
        public void show(){
            System.out.println(Outer.this.a);
        }
    }
}
public class test {
    public static void main(String[] args) {
        Outer.Inner inner=new Outer().new Inner();
    }
}

5.静态内部类

用static修饰的内部类叫静态内部类,使用方法和调用限制和静态方法相同,即静态内部类只能调用外部类的静态属性和方法。对静态内部类的调用可以视为对一个静态方法的调用。

class Outer {
    private static int a=1;
    static class Inner{
        private int a=2;
        public void show(){
            System.out.println(Outer.a);
        }
    }
}

6.匿名内部类

没有名称的内部类,形式上是直接new接口或者抽象类,实际上是产生一个匿名的实现类。

new匿名内部类的前提是必须继承一个父类或者实现一个接口;

匿名内部类中不能使用static修饰符;

匿名内部类就是一个普通的实现类,里面方法属性不限量。可重载可自定义等等。

d94ea07aa0fd4befada7bab950ad75e2.png

调用自己特有的方法时候注意:

因为这是对象是父类型,并没有用子类去实现父类,所以调用不到自己特有的方法

又因为这里没有实现类供调用来强转:

e9d88770c9ff4c1ab38a01e2a96bafcd.png

所以一般不给引用指向,而是在创建的时候直接调用:

67fca1ded37140649efc88b170e26ff9.png

目录
相关文章
|
2月前
|
Java 编译器
【Java】内部类
【Java】内部类
22 0
|
4月前
|
Java
【Java基础面试二】、个Java文件里可以有多个类吗(不含内部类)?
这篇文章讨论了Java文件中类的定义规则,指出一个Java文件可以包含多个类(不包含内部类),但其中最多只能有一个public类,且如果有public类,它的名称必须与文件名一致。
|
4月前
|
算法 Java
12 Java常用类(一)(内部类+object类+包装类)
12 Java常用类(一)(内部类+object类+包装类)
41 5
|
5月前
|
Java
Java进阶之内部类
【7月更文挑战第13天】Java内部类增进代码组织与封装,允许直接访问外部类成员,包括私有成员。主要有四种类型:成员、静态、局部和匿名内部类。匿名内部类常用于一次性实现接口或扩展类。内部类可隐藏实现细节,减少命名冲突,并在特定上下文中定义辅助类。示例展示了静态和非静态内部类如何在Shape类中封装Circle和Rectangle。使用内部类能提升代码可读性,但可能增加复杂性。
39 6
|
4月前
|
Java
【Java】内部类、枚举、泛型
【Java】内部类、枚举、泛型
|
6月前
|
Java
一篇文章讲明白Java中内部类详解—匿名内部类
一篇文章讲明白Java中内部类详解—匿名内部类
96 2
|
6月前
|
设计模式 Java 编译器
Java中的内部类(如果想知道Java中有关内部类的知识点,那么只看这一篇就足够了!)
Java中的内部类(如果想知道Java中有关内部类的知识点,那么只看这一篇就足够了!)
|
6月前
|
Java 编译器
24. 【Java教程】内部类
24. 【Java教程】内部类
32 2
|
7月前
|
Java 程序员
Java的内部类与匿名类的技术性文章
Java的内部类与匿名类的技术性文章
46 1
|
7月前
|
Java
Java内部类(成员内部类、静态内部类、局部内部类、局部内部类)
Java内部类(成员内部类、静态内部类、局部内部类、局部内部类)
77 3