• Java----内部类、外部类、匿名对象、匿名对象的创建


    内部类

            概述:

            将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类

            成员内部类:

            在描述事务时,若一个事物内部还包含其他事物,就可以使用内部类来表示这种结构。比如:汽车类Car中包含发动机类Engine,这时,Engine就是可以使用内部类来描述,定义在成员位置。

          访问特点:    

                    内部类可以直接访问外部类的成员,包括私有成员

                    外部类要访问内部类的成员,必须要建立内部类的对象

            创建内部类对象格式:

                    外部类名,内部类名,对象名=new 外部类型().new 内部类型(); 

    内部类例子 :

            Person类:

                    外部类:人

                    内部类:心脏(是否跳动)

    1. package aaa;
    2. public class Person {
    3. private boolean live=true;
    4. class Heart{
    5. public void jump(){
    6. if(live)
    7. System.out.println("还活着。");
    8. else
    9. System.out.println("不跳了。");
    10. }
    11. }
    12. public boolean isLive() {
    13. return live;
    14. }
    15. public void setLive(boolean live) {
    16. this.live = live;
    17. }
    18. }

     测试类:

    1. package aaa;
    2. import java.util.Scanner;
    3. public class Test {
    4. public static void main(String[] args){
    5. Person p = new Person();
    6. Person.Heart h = p.new Heart();
    7. h.jump();
    8. p.setLive(false);
    9. h.jump();
    10. }
    11. }

    匿名对象+匿名对象的创建

    例子:

    测试类

    1. package aaa;
    2. import java.util.Scanner;
    3. public class Test {
    4. public static void main(String[] args){
    5. // 接口和方法不能创建对象
    6. // FlyClass flyClass = new FlyClass(){
    7. // 匿名类,父类接口是FlyClass,实现了FlyClass接口
    8. // public void fly(){
    9. // System.out.println("飞起来!");
    10. // }
    11. // @Override
    12. // public void down(){
    13. // System.out.println("下来吧!");
    14. // }
    15. // };
    16. showFly(new FlyCLass(){
    17. //类似于匿名对象,在匿名对象的基础上加上了匿名创建对象
    18. public void fly(){
    19. System.out.println("飞起来!");
    20. }
    21. });
    22. // Fu fu = new Fu();
    23. // fu.fly();
    24. // Person p = new Person();
    25. // Person.Heart h =p.new Heart();
    26. // h.jump();
    27. // p.setLive(false);
    28. // h.jump();
    29. // Scanner scanner = new Scanner(System.in);
    30. // int a = scanner.nextInt();
    31. // System.out.println(scanner.nextInt());
    32. }
    33. //创建一个fly()方法
    34. public static void showFly(FlyCLass f){
    35. f.fly();
    36. }
    37. }

     接口

    1. package aaa;
    2. public interface FlyCLass {
    3. public void fly();
    4. }

     一个类并实现了接口

     

    1. package aaa;
    2. import aaa.FlyCLass;
    3. public class Fu implements FlyCLass {
    4. @Override
    5. public void fly(){
    6. System.out.println("飞起来");
    7. }
    8. public void down(){
    9. System.out.println("下来吧");
    10. }
    11. }

  • 相关阅读:
    umi 如何设置环境变量并使用
    java开发常见面试问题
    linux查看进程号、端口号
    面试系列之《Linux&Shell》(更新中)
    排序算法复杂度
    【Java成王之路】EE初阶第十篇:(网络编程) 4
    在Blazor中使用Chart.js快速创建图表
    「聊设计模式」之观察者模式(Observer)
    分页操作系统
    30.nacos做注册中心入门实例(springcloud)
  • 原文地址:https://blog.csdn.net/m0_56501550/article/details/127709237