27 内部类的使用

Posted longesang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了27 内部类的使用相关的知识,希望对你有一定的参考价值。

内部类分为三种:成员内部类、局部内部类、匿名内部类

 

/*
* 成员内部类:
* 在类的成员位置,和成员变量以及成员方法所在的位置是一样
* 在内部类当中,可以直接访问外部类的成员,包括私有成员
*
* 成员内部类的修饰符:
* 我们可以使用权限修饰符修饰成员内部类,但是如果使用私有来修饰,则无法在其他类中访问
* 我们可以使用static修饰成员内部类,不用再创建外部类的对象了
*
* 我们可以使用abstract,final修饰成员内部类
*/

 

/*
* 局部内部类
* 在方法内,出了方法之后就无法使用(参考代码块特点)
*/

 

/*
* 匿名内部类:
* 可以把匿名内部类看成是一个没有名字的局部内部类
* 定义在方法当中
* 必须在定义匿名内部类的时候创建他的对象
* 格式:
* new 类/接口()
* 如果是创建了继承这个类的子类对象,我们可以重写父类的方法
* 如果是创建了实现这个接口的子类对象,我们必须要实现该接口的所有方法
* ;
* 原理:而是创建了继承这个类的子类对象或者是创建了实现这个接口的子类对象
*
*/

 

package day27_内部类;
/*
 * 成员内部类:
 *         在类的成员位置,和成员变量以及成员方法所在的位置是一样的
 *         在内部类当中,可以直接访问外部类的成员,包括私有成员
 *
 * 成员内部类的修饰符:
 *         我们可以使用权限修饰符修饰成员内部类,但是如果使用私有来修饰,则无法在其他类中访问
 *         我们可以使用static修饰成员内部类,不用再创建外部类的对象了
 *
 * 我们可以使用abstract,final修饰成员内部类
 */
public class InnerDemo 
    public static void main(String[] args) 
        Outer.Inner i = new Outer().new Inner();
        i.function();

        Outer.Inner2.eat();
    


class Outer 
    private int num = 10;

    class Inner 
        public void function() 
            System.out.println(num);
        
    

    static class Inner2 
        public static void eat() 
            System.out.println("吃东西");
        
    

输出

技术图片

 

 

/*
 * 局部内部类
 *         在方法内,出了方法之后就无法使用(参考代码块特点)
 */
public class InnerDemo2 
    public static void main(String[] args) 
        Outer2 o = new Outer2();
        o.method();
    


class Outer2 
    public void method() 
        int num = 10;

        class Inner 
            public void eat() 
                System.out.println("狗吃肉");
            
        

        Inner i = new Inner();
        i.eat();
    

    //出了method方法,方法内的变量、类都不可使用。
    public void fun() 
//        Inner i = new Inner();
//        System.out.println(num);
    

 

输出

技术图片

 

以上是关于27 内部类的使用的主要内容,如果未能解决你的问题,请参考以下文章

内部类的使用类型

java内部类的匿名内部类

Java——基础知识——内部类

内部类的使用

各种内部类和枚举类的使用

Java中内部类的使用总结