欢迎来到电脑知识学习网,专业的电脑知识大全学习平台!

手机版

java类实例-普通类、内部类、静态内部类、局部类、匿名类

软件应用 发布时间:2021-09-10 10:10:07

java中含有许多类,不同的类有不同的用法,这里列举了一些实例。

普通类大家都容易理解,内部类主要起到代码隐藏机制,为了更好的组织代码结构。

内部类测出现给编程带来了很多困扰,在java编程思想中,对为什么出现内部类做了如下解释:

每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承某个(接口)实现,对内部类都没有影响。

内部类是的多重继承的解决方案变得完整,实现了“多重继承”。毕竟一个java类只能继承一个父类。

public class ClassDemo {

    InnerClass innerClass = new InnerClass();
    public void selfIntroduce(){
        System.out.println("hello,我是:" this.getClass().getName());
    }
    public void useInnerClass(){
        innerClass.selfIntroduce();

        InnerClass innerClass = new InnerClass();
        innerClass.name="wowo";
        innerClass.selfIntroduce();;
    }

    /**
     * 方法中的局部类
     */
    public void useMethodClass(){
        class MethodClass implements HelloInnerClass{

            @Override
            public void selfIntroduction() {
                System.out.println("我在方法里也可以创建哦,我的名字是:" this.getClass().getName());
            }
        }
        MethodClass methodClass = new MethodClass();
        methodClass.selfIntroduction();
    }

    /**
     * 定义一个接口
     */
    interface HelloInnerClass{
        void selfIntroduction();
    };

    public static void main(String[] args) {
        SecondClass secondClass = new SecondClass();
        secondClass.selfIntroduce();
        //内部类不能new,会报错
        //InnerClass innerClass = new InnerClass();
        ClassDemo classDemo = new ClassDemo();
        classDemo.useInnerClass();
        //静态内部类,就可以在静态方法中直接new
        StaticInnerClass staticInnerClass = new StaticInnerClass();
        staticInnerClass.selfIntroduce();
        ClassDemo.StaticInnerClass staticInnerClass1 = new ClassDemo.StaticInnerClass();
        staticInnerClass1.selfIntroduce();
        StaticInnerClass.selfIntroduce("静态方法自我介绍。");

        //匿名内部类
        HelloInnerClass trump = new HelloInnerClass() {
            @Override
            public void selfIntroduction() {
                System.out.println("wowo,我是一个匿名内部类哦,我的名字叫川建国。");
            }
        };
        trump.selfIntroduction();

        //局部类
        classDemo.useMethodClass();
    }

    /**
     * 普通内部类
     */
    class InnerClass{
        public String name;
        public void selfIntroduce(){
            System.out.println("hello,InnerClass,我的名字是:"   this.getClass().getName() ",name:" name);
        }
    }

    /**
     * 静态内部类
     */
    static class StaticInnerClass{
        public String name = "StaticInnerClass";
        public void selfIntroduce(){
            System.out.println("hello,StaticInnerClass,我的名字是:"   this.getClass().getName() ",name:" name);
        }
        public static void selfIntroduce(String wowo){
            System.out.println("hello,StaticInnerClass,我的名字是:" wowo);
        }
    }

}

/**
 * 同一个类文件中的其他类
 * 使用起来和public类没什么区别
 * 编译完之后是一个单独的class文件,与ClassDemo只差一个public
 */
class SecondClass{

    public void selfIntroduce(){
        System.out.println("hello,我是" this.getClass().getName());
    }

    public static void main(String[] args) {
        ClassDemo classDemo = new ClassDemo();
        classDemo.selfIntroduce();
    }

}

java类实例-普通类、内部类、静态内部类、局部类、匿名类

责任编辑:电脑知识学习网

软件应用