zoukankan      html  css  js  c++  java
  • 内部类

    如何创建内部类的对象:

    package com.aff.inter;
    
    import com.aff.inter.Person.Dog;
    
    /*
     类的第五个成员:内部类
        1.类的内部定义的类
        2.内部类的分类:成员内部类(声明在类内部且方法外的 )vs 局部内部类(声明在类的方法里)
        3.成员内部类:
                           1.是外部类的一个成员: 可以有修饰符(四个)       ②static   final
                           2.具体类的特点:abstract      ②还可以在其内部定义属性,方法 ,构造器
    
        4.局部内部类
        5.关于内部类掌握三点:
                                           ① 创建成员内部类的对象
                                           ②如何区分外部类,内部类的变量
                                           ③局部内部类的使用
    */
    public class TestInnerClass {
        public static void main(String[] args) {
            // 创建静态内部类的对象,可以直接通过外部类调用静态内部类的构造器
            Person.Dog d = new Person.Dog();
    
            // Person.Bird b = new Person.Bird(); 创建不了,因为是非静态的
            // 创建非静态内部类的对象,必须先创建外部类的对象,通过外部类的对象调用内部类的构造器
            Person p = new Person();
            Person.Bird b = p.new Bird();
            b.info();
        }
    
    }
    
    class Person {
        String name;
        int age;
    
        // 成员内部类(非static的)
        class Bird {
            String name;
            int id;
    
            public Bird() {
            }
    
            public void setName(String name) {
                this.name = name;
            }
    
            public void info() {
                show();
            }
        }
    
        // 成员内部类(static 静态的)
        static class Dog {
        }
    
        public void show() {
            System.out.println("show  shwo");
        }
    }

    局部内部类的使用:

    package com.aff.inter;
    
    //局部内部类的使用
    public class TestInnerCla {
    
    }
    
    class OutClass {
        // 局部内部类
        // 如下的使用方式比较少
        public void method1() {
            class InnerClass {
            }
        }
    
        // 常常使用一个方法,使其返回值为某个类或者接口的对象,而这个类或者接口在方法内部创建
        public Comparable getComparable() {
            // 创建一个实现Comparable接口的类:局部内部类
            class MyComparable implements Comparable {
    
                @Override
                public int compareTo(java.lang.Object o) {
                    return 0;
                }
            }
            // 返回一个实现类的对象
            return new MyComparable();
        }
    
        
        //匿名局部内部类对象
        public Comparable getComparable1() {
            // 创建一个实现Comparable接口的类:匿名局部内部类对象
            // 返回一个实现类的对象
            return new Comparable() {
    
                @Override
                public int compareTo(java.lang.Object o) {
                    return 0;
                }
            };
            
        }
    
    }
    输出结果:
    show  shwo
    All that work will definitely pay off
  • 相关阅读:
    TDengine在上海电气储能智慧运维系统中的应用
    一文带你理解TDengine中的缓存技术
    taosAdapter正式发布:支持从OpenTSDB向TDengine无缝迁移
    TDengine 在中节能风力发电运维系统中的落地实践
    格创东智选择 TDengine,实现海量数据实时全生命周期管理
    TDengine 在水电厂畸变波形分析及故障预判系统中的应用
    使用wireshark抓包分析TCP三次握手
    K8s中 蓝绿部署、金丝雀发布、滚动更新汇总
    K8s运维锦囊,19个常见故障解决方法
    一次由 Kubernetes HostPort 引发的服务故障排错记实
  • 原文地址:https://www.cnblogs.com/afangfang/p/12576426.html
Copyright © 2011-2022 走看看