Java 静态成员类 非静态的成员类 局部类 匿名类

Posted 11biscuits

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 静态成员类 非静态的成员类 局部类 匿名类相关的知识,希望对你有一定的参考价值。

//*静态 *非静态的成员类 *局部类 *匿名类
public class Main{
    public static void main(String[]argv){
        //位于包的内部的类我们称之为顶级类
        //类里面还可以嵌套类
        //嵌套类可以分为四种
        //*静态 *非静态的成员类 *局部类 *匿名类

        //#静态成员类
        //静态成员类需要定义在一个类里面,当类的属性用基础数据类型描述时
        //过于复杂,则可以使用静态成员类
        Person person=new Person();
        person.show();
        showHello();
        noname();
    }
    //静态成员类
    //仍然遵循public private protected访问准则
    //如果写为public,则在Main类外也可以访问 类型名称为 Main.Perosn girl=new Main.Person();
    private static class Person{
        public void show(){
            System.out.print("hello world\\n");
        }
    }

    //非静态成员类
    //与静态成员类的写法只是相差个static,但二者差别巨大
    public class Girl{
        private void show(){
            System.out.print("i am girl\\n");
        }
    }
    //如果在Main外面想定义Girl对象,则需要现构造一个Main对象,而静态成员类不用
    /*
     *var obj=new Main();
     *var girl=new Main.Girl();
     *girl.show();
     * */



    //局部类
    //在构造函数,初始化代码块内部被声明,只能在相应的代码块使用
    //局部类也可以访问外部类的变量,但变量必须是final的
    public static void showHello(){
        class GirlF{
            GirlF(String name){
                this.name=name;
            }
            public String name;
            public void showName(){
                System.out.println(this.name);
            }
        }
        GirlF per=new GirlF("gao");
        per.showName();
    }

    //匿名类
    public static void noname(){
        var obj=new Tensor(){
            @Override
            public double getNum(){
                return 99;
            }
        };
        System.out.println(obj.getNum());
    }

    //类的内部,枚举,接口也可以嵌套
    //避免使用,很头大
}

以上是关于Java 静态成员类 非静态的成员类 局部类 匿名类的主要内容,如果未能解决你的问题,请参考以下文章

Java语言中四种内部类(成员内部类,局部内部类,静态内部类,匿名内部类)在实际使用中有啥好处?

Java学习(十六)成员内部类,静态内部类,匿名内部类,局部内部类

Java内部类详解(含:成员内部类局部内部类匿名内部类静态内部类)

java-内部类

内部类

内部类和匿名内部类的用法