首页 > 其他 > 详细

面向对象17:N种内部类

时间:2020-09-04 18:30:54      阅读:55      评论:0      收藏:0      [点我收藏+]
//内部类就是在一个类中再定义一个类

//内部类可以直接访问内部类的一些东西

单拉出来一个联系下,看看刚看到的有什么执行的方法,层次关系,特点,进行罗列一个

搞思维导图有几个技巧,需要把这个弄成分点的样式,- ,这个是罗列出一个一个的

内部类:
  • 内部类就是在一个类的内部再定义一个类,比如,A类中定义个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了。
  • 1、成员内部类
  • 2、静态内部类
  • 3、局部内部类
  • 4、匿名内部类
    • 不用把实例保存到变量中
1、成员内部类Inner:

Outer.java

package com.oop.Demo10;

public class Outer {   //外部类
    private int id=10;

    public void out() {
        System.out.println("这是外部类的方法");
    }

    public void getID() {
        System.out.println(id);
    }

    public  class Inner {  //内部类
        public void in() {  //类里面有方法
            System.out.println("这是内部类的方法");
        }
    }

}

实现类Application

package com.oop.Demo10;

//想要调用一个类里的方法,先new一个对象new这个类的对象,然后通过 类.方法 调用
//加上 static 变成静态类,先实例化
public class Application {
    public static void main(String[] args) {
        Outer outer = new Outer();
        //先new外部类,再new内部类
        //通过这个外部类来实例化内部类
       Outer.Inner inner = outer.new Inner();  //outer.new Inner()
        //对象的类型 对象名
        inner.in();   //调用外部类

        System.out.println("============");

        outer.out();  //调用内部类

    }
}

输出:

这是内部类的方法
============
这是外部类的方法

进程已结束,退出代码 0
2、静态内部类:(先了解)
package com.oop.Demo10;

public class Outer {   //外部类
    private int id=10;

    public void out() {
        System.out.println("这是外部类的方法");
    }

    public static class Inner {  //内部类
        //加上static,id报红的原因是先实例化了
        //加了static成了静态类,先实例化了类,定义变量id=10在其后面
        public void in() {  //类里面有方法
            System.out.println("这是内部类的方法");
        }

        public void getID() {
            System.out.println(id);  //id报红
        }

    }

}


3.局部内部类:

B1.java

package com.oop.Demo10;

public class B1 {

    //局部内部类
    public void method() {  //方法
        class Inner {       //局部内部类
            public void in() {  //局部内部类中的方法

            }
        }
    }
}

4.匿名内部类:
  • 1.一个java类中可以有多个class类,但是只能只有一个public class类

A1.java

package com.oop.Demo10;

public class A1 {
    public class Outer {
        
    }
}

class a1 {
    
}


  • 2.名内部类没有名字初始化类,不用将实例保存到变量中

A2.java,实现接口是不是子类?

package com.oop.Demo10;

public class A2 {
    public static void main(String[] args) {
        //匿名内部类
        //没有名字初始化类,不用将实例保存到变量中~

        new Apple().eat();
        new UserService() {
            @Override
            public void Hello() {

            }
        };

    }
}

class Apple {
    public void eat() {
        System.out.println("123");
    }
}

interface UserService {
    void Hello();  //接口,先创建一个方法的接口让另外一个去实现
}

面向对象17:N种内部类

原文:https://www.cnblogs.com/function123/p/13615120.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!