美文网首页
Java的内部类

Java的内部类

作者: Sal | 来源:发表于2016-02-20 08:22 被阅读0次

public class B {
    public int b1 = 10;
    public static int b2 = 20;

    public int returnB1_2() {
        return b1 + b2;
    }

    public static int returnB2() {
        //静态方法
        return b2;
    }

    public class BInn {
        //普通内部类只能引用外部类的属性和方法 但不能给外部属性和方法赋值
        //也不可以引用内部静态类和内部普通类的属性
        //普通内部类不可以有静态属性和静态方法
        int bI1 = b1;

        public void change() {
            B.b2 = 30; //若要修改外部静态属性需要通过构造方法实现
        }

        int bI2 = b2;
    }

    public static class BSInn {
        static int bIS2 = returnB2() - 10;
        //静态内部类只能引用外部类的静态属性和方法
        static int bIS1 = b2;
    }

    public int test() {
        class Test1
                //方法内部类不允许用public static private 修饰
        {
            int t3 = b1;
            //方法内部类可以使用外部类的属性和方法
            int t4 = returnB1_2();
            int t1 = 10;
            int t2 = 20;
        }
        //而且方法内部类需要构造
        Test1 test1 = new Test1();
        return test1.t1 + test1.t2;
        //这里无法引用内部静态类和普通类的属性
    }
}
public class Main {
    public static void main(String[] args) {
        B b = new B();
        System.out.println(B.b2); //20
//20 直接引用普通类的静态属性
        System.out.println(B.returnB2());//20
//20 直接引用普通类的静态方法
        System.out.println(b.returnB1_2() + b.returnB2()); //50
//30+20 通过构造引用普通类的普通方法和静态方法
        System.out.println(b.b1 + b.b2 + b.returnB1_2() + b.returnB2());//10+20+30+20
//通过构造引用普通类的所有属性和方法
        System.out.println(B.BSInn.bIS2);
//20-10 直接引用静态内部类的静态属性 但不能引用静态类的普通属性//10
        B.BSInn bsi = new B.BSInn();
        System.out.println(bsi.bIS1 + bsi.bIS2);//20
//通过构造既可以引用普通成员也可以引用静态成员
        B.BInn bi = new B().new BInn();
        bi.change();
//通过方法change修改b2为30 但是没有生效
        System.out.println("修改厚的b2:" + B.b2);
        System.out.println("returnB2的值:" + B.returnB2());
        System.out.println(bi.bI2);//为什么这里20
        System.out.println("again!");
        B.BInn bi2 = new B().new BInn();
        System.out.println(bi2.bI2);
    }
}

相关文章

  • Java 中的方法内部类

    Java 中的方法内部类 方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内...

  • PHP转JAVA的记录

    Java 数组 内部类 内部类的创建:内部类可以对包内其他类隐藏想实现一个接口时, 不想新建类文件 内部类可以访问...

  • Java内部类

    Java内部类,简单来说就是将一个类定义在另一个类或者方法里面,主要分为成员内部类,局部内部类,匿名内部类和静态内...

  • Java内部类

    Java内部类 大纲: java内部类有什么特点?为什么需要内部类? 非静态内部类持有外部类的引用 内部类的分类。...

  • Java静态内部类

    Java静态内部类 博客分类: java 两种内部类 Java的内部类有两种,一种是静态内部类,另一种是普通内部类...

  • 内部类

    内部类可以分为:非静态内部类;静态内部类;匿名内部类。 一、内部类 首先要说,Java为什么要使用内部类?java...

  • JavaSE基础知识学习-----内部类

    内部类 类的五个成分:属性,方法,构造器,代码块,内部类。什么是内部类?在java中,允许一个类定义在另一个类的内...

  • Kotlin内联类、内部类、嵌套类

    Kotlin内联类、内部类、嵌套类 在开始介绍Kotlin内联类、内部类、嵌套类之前,先简要回顾一下java中的内...

  • Java 内部类和泛型的理解

    Java 内部类 Java非静态内部类持有对外部类的引用,可以访问外部类的状态使用方法 OuterClass.th...

  • kotlin之内部类,匿名内部类与伴生对象

    个人博客:haichenyi.com。感谢关注 内部类   kotlin的内部类与java的内部类有点不同java...

网友评论

      本文标题:Java的内部类

      本文链接:https://www.haomeiwen.com/subject/hasvkttx.html