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
  • 相关阅读:
    Day8 类的继承
    Day7 访问权限
    javascript性能优化
    JavaScript 基础:Babel 转译 class 过程窥探
    HTML5之新增的元素和废除的元素 (声明:内容节选自《HTML 5从入门到精通》)
    谈起音视频,前端能做些什么
    Safari不能保存session的处理方法
    一篇关于BEM命名规范
    H5新人福音~零配置搭建现代化的前端工程
    2018年,最经典的26个JavaScript面试题和答案!
  • 原文地址:https://www.cnblogs.com/afangfang/p/12576426.html
Copyright © 2011-2022 走看看