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
  • 相关阅读:
    A Bug's Life(削弱版食物链)
    The Suspects
    Find The Multiple
    Lake Counting(dfs)
    经典dfs(depth-first search)
    喝啤酒(预防老年痴呆的深度搜索)
    C语言的位运算的优势 !
    Oil Deposits
    Catch That Cow
    HTML 003 元素
  • 原文地址:https://www.cnblogs.com/afangfang/p/12576426.html
Copyright © 2011-2022 走看看