• java 内部类


    1.静态内部类

    ----如果一个类包含一个完整的成分,如汽车类中的发动机类

    ---特点,使用与欧同类是一样的,类有的成分都有,只是位置在别人里面而已

    ---可以直接发囊文外部类的静态成员,不能直接访问外部类的实例成员

    1. package com.yuyang.d3_innerclass;
    2. /**
    3. * 外部类
    4. */
    5. public class Outer {
    6. public static int a=100;
    7. private String hobby;
    8. /*
    9. 静态成员内部类
    10. */
    11. public static class Inner{
    12. private String name;
    13. private int age;
    14. public static String SchoolName;
    15. public Inner(String name, int age) {
    16. this.name = name;
    17. this.age = age;
    18. }
    19. public Inner() {
    20. }
    21. public String getName() {
    22. return name;
    23. }
    24. public void setName(String name) {
    25. this.name = name;
    26. }
    27. public int getAge() {
    28. return age;
    29. }
    30. public void setAge(int age) {
    31. this.age = age;
    32. }
    33. // Outer o=new Outer();
    34. public void show(){
    35. System.out.println(a);
    36. System.out.println(name);
    37. // System.out.println(o.hobby);
    38. }
    39. }
    40. }

    如何创建对象

    外部类.内部类=new 外部类.内部类构造器

     

    1. package com.yuyang.d3_innerclass;
    2. public class Test {
    3. Outer.Inner i=new Outer.Inner("小胖鱼",19);
    4. }

    2.成员内部类(实例内部类)

    ---无static修饰属于外部类的对象

    --- 可以直接访问外部类的静态成员

    ----可以直接访问外部类对象的实例成员

    1. package com.yuyang.d3_innerclass;
    2. /**
    3. * 外部类
    4. */
    5. public class Outer {
    6. // public static int a=100;
    7. // private String hobby;
    8. public class Inner{
    9. private String name;
    10. private int age;
    11. // public static int a;
    12. public String getName() {
    13. return name;
    14. }
    15. public void setName(String name) {
    16. this.name = name;
    17. }
    18. public int getAge() {
    19. return age;
    20. }
    21. public void setAge(int age) {
    22. this.age = age;
    23. }
    24. public void show(){
    25. System.out.println(name);
    26. }
    27. }
    28. }

    如何创建对象

    外部类.内部类=new 外部类构造器.new 内部类构造器

    1. package com.yuyang.d3_innerclass;
    2. public class Test {
    3. public static void main(String[] args) {
    4. Outer.Inner n = new Outer().new Inner();
    5. }
    6. }

    3.局部内部类(·了解即可)

    局部内部类放在方法,代码块,构造器等执行体中

    局部内部类的文件名:外部类$内部类.class

    略-------------------------------

    4.匿名内部类(重点) 

    ----本质上是没有名字的局部内部类,定义在方法中,代码块中,等。

     ---作用是方便创建子类对象,最终目的是为了简化代码的编写。

    格式:

    new 类|抽象类名|或者接口名(){

    重写方法;

    }

    ---特点总结

    ---匿名内部类没有一个名字的内部类

    ---匿名内部类写出来就会产生一个内部类的对象。

    ---匿名内部类的对象类型相当于当前new的那个子类的子类类型。

    --能产生class文件

    1. package com.yuyang.d4_inteerclass_anonymous;
    2. public class Test {
    3. public static void main(String[] args) {
    4. Animal a=new Animal() {
    5. @Override
    6. public void run() {
    7. System.out.println("老虎跑的贼快");
    8. }
    9. };
    10. }
    11. }
    12. abstract class Animal{
    13. public abstract void run();
    14. }

  • 相关阅读:
    云计算 - 1 - 三虚拟机Hadoop的安装和配置
    使用POI生成Excel下拉框
    Hadoop HBase Hive day4.md
    【打卡】21天学习挑战赛—RK3399平台开发入门到精通-day13
    基于共享存储的Harbor高可用-Docker部署方案
    高压放大器在改良电形成装置参数优化中的应用
    ROS 文件系统
    疯 狂 的 文 件 夹 【收藏起来】
    CocoaPods公有库和私有库制作
    flutter 阿里云上传文件
  • 原文地址:https://blog.csdn.net/maxnum/article/details/127683806