内部类

作者: 冯宏志 | 来源:发表于2020-12-12 12:00 被阅读0次
  • Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B就是外部类
  • 内部类的分类:成员内部类(静态、非静态)vs局部内部类(方法内、代码块内、构造器内)

成员内部类

1、一方面,作为外部类的成员。①、调用外部类的结构。②、可以被static修饰。③可以被四种不同的权限修饰。
2、另一方面,作为一个类。①、可以定义属性、方法、构造器等。②可以被final修饰,表示此类不能被继承。③可以被abstract修饰

package com.atguigu.java8;

public class InnerClassTest {

}

class Person{
    String name;
    int age;
    
    public void eat() {
        System.out.println("人吃饭");
    }
    
    //静态成员内部类
    static class Dog{
        String name;
        int age;
        
        public void show() {
            System.out.println("我是狗");
        }
    }
    //非静态成员内部类
    class Bird{
        String name;
        
        public Bird() {
            
        }
        
        public void sing() {
            System.out.println("我是一只小小鸟");
            Person.this.eat();//调用外部类的非静态属性
        }
    }
}

局部内部类

  1. 内部类的实例化问题
  2. 如何在内部类中区分调用外部类的结构
  3. 开发中局部内部类的使用
package com.atguigu.java8;

public class InnerClassTest {
    public static void main(String[] args) {
        //1、内部类的实例化问题
        //实例化静态成员内部类
        Person.Dog dog = new Person.Dog();
        dog.show();
        //实例化非静态成员内部类
        Person p = new Person();
        Person.Bird bird = p.new Bird();
        bird.sing();
    }
}

class Person{
    String name;
    int age;
    
    public void eat() {
        System.out.println("人吃饭");
    }
    
    //静态成员内部类
    static class Dog{
        String name;
        int age;
        
        public void show() {
            System.out.println("我是狗");
        }
    }
    //非静态成员内部类
    class Bird{
        String name;
        
        public Bird() {
            
        }
        
        public void sing() {
            System.out.println("我是一只小小鸟");
            Person.this.eat();//调用外部类的非静态属性
        }
        
        //2、如何在内部类中区分调用外部类的结构
        public void display(String name) {
            System.out.println(name);               //传入的形参
            System.out.println(this.name);          //内部类的name
            System.out.println(Person.this.name);   //外部类的name
        }
    }
}
package com.atguigu.java8;

//3、开发中局部内部类的使用 
public class InnerClassTest1 {
    //返回一个实现了Comparable接口的类的对象
    public Comparable getComparable() {
        //创建一个实现了Comparable接口的类:局部内部类
        //方式一:
        class MyComparable implements Comparable{

            @Override
            public int compareTo(Object o) {
                // TODO Auto-generated method stub
                return 0;
            }
            
        }
        return new MyComparable();
        //方式二:
        return new Comparable() {

            @Override
            public int compareTo(Object o) {
                // TODO Auto-generated method stub
                return 0;
            }
            
        }
    }
    
    
}



相关文章

  • 内部类

    成员内部类 局部内部类(定义在方法内和定义在作用域内的类) 匿名内部类

  • Java 内部类

    内部类包括成员内部类、方法内部类、*静态内部类、匿名内部类*。 内部类的作用 由于内部类的实现和外部类没有关系,内...

  • Java学习——内部类

    内部类 一,成员内部类(包括静态内部类和非静态内部类) 非静态内部类可以直接访问外部类的成员,反之则不行 非静态内...

  • Java 内部类、静态内部类、方法内部类(未完待续)

    内部类 什么是内部类?内部类其实就是在一个类中创建的类。内部类有四种: 成员内部类 静态内部类 局部内部类 匿名内...

  • java 内部类

    一般有四种内部类的使用方式: 嵌套的内部类 方法内的内部类 静态内部类 匿名内部类 什么时候用内部类: 有时候明显...

  • 内部类

    内部类 1.可以访问访问其外部类所有属性和方法,无需创建外部类对象 2.必须创建内部类对象,否则无法从外部类访问内...

  • Java 中的方法内部类

    Java 中的方法内部类 方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内...

  • java——内部类

    内部类 定义: 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内...

  • java之面向对象5

    方法内部类: 简而言之就是定义在外部类的方法内的类。 方法内部类只在该方法的内部可见,即只在该方法内可以使用。 方...

  • Java 内部类

    1. 内部类 概念:在一个类的内部再定义一个完整的类内部类分为 4 类:成员内部类、静态内部类、局部内部类、匿名内...

网友评论

      本文标题:内部类

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