栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础14-内部类&四种权限修饰符

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础14-内部类&四种权限修饰符

内部类
package 进阶.demo09_内部类;

public class demo01_内部类 {
    public static void main(String[] args) {

        
    }
}

成员内部类 成员内部类的定义
package 进阶.demo09_内部类;

public class demo02_成员内部类 { // 外部类

    public class Inner {  // 内部类

        public void func() {
            System.out.println("内部类的方法");
            // 内部类访问外部类的`name`,正确
            System.out.println(name);
        }
    }

    private String name;

    public void method() {
        System.out.println("外部类的方法");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

成员内部类的使用
package 进阶.demo09_内部类;

public class demo03_成员内部类的使用 {
    public static void main(String[] args) {

        //间接: 通过外部类的对象,调用外部类的方法,然后间接调用内部类的方法
        demo02_成员内部类 demo = new demo02_成员内部类();
        demo.method();

        //直接:
        demo02_成员内部类.Inner inner = new demo02_成员内部类().new Inner();
        inner.func();
    }
}

局部内部类 局部内部类的定义
package 进阶.demo09_内部类;

public class demo04_局部内部类 {
    

    public void methodOuter() {
        class Inner { // 局部内部类
            int num = 10;
            public void methodInner() {
                System.out.println(num);
            }
        }

        // 局部实现内部类
        Inner inner = new Inner();
        inner.methodInner();
    }


}

局部内部类的使用
package 进阶.demo09_内部类;

public class demo05_局部内部类的使用 {

    public static void main(String[] args) {

        demo04_局部内部类 outer = new demo04_局部内部类();
        outer.methodOuter();
    }
}

内部类同名处理规则
package 进阶.demo09_内部类;

public class demo06_内外部类同名处理规则 {

    int num = 10;  // 外部类的成员变量

    public class Inner {
        int num = 20;  // 内部类的成员变量

        public void func() {

            int num = 30;  // 内部方法的局部变量
            System.out.println(num); //  30
            System.out.println(this.num); // 20
//            System.out.println(super.num);  错误,内外部类不是继承关系
            System.out.println(demo06_内外部类同名处理规则.this.num); // 10

        }

    }
}

内部类的final关键字
package 进阶.demo09_内部类;

public class demo08_内部类的final关键字 {
    public static void main(String[] args) {
        


    }


    public void method() {
        int num = 10;
//        num = 20 ;添加该语句则内部类无法调用

        class Inner {
            public void methodInner() {
                System.out.println(num);
            }
        }
    }
}

匿名内部类
package 进阶.demo09_内部类;


public class demo09_匿名内部类 {
    public static void main(String[] args) {
//        demo11_MyInterfaceImpl impl = new demo11_MyInterfaceImpl();
        demo10_MyInterface impl = new demo11_MyInterfaceImpl(); // 左父右子也可以实现,多态
        impl.method();


        // 使用匿名内部类:覆盖重写了接口的抽象方法,{}即为一个类,是匿名的
        demo10_MyInterface obj = new demo10_MyInterface() {
            @Override
            public void method() {
                System.out.println("使用了匿名内部类");
            }
        };

        obj.method();

    }
}

接口定义
package 进阶.demo09_内部类;

public interface demo10_MyInterface {
    void method(); // 抽象方法
}

实现类定义
package 进阶.demo09_内部类;

public class demo11_MyInterfaceImpl implements demo10_MyInterface{
    @Override
    public void method() {
        System.out.println("实现类覆盖重写了抽象方法");
    }
}

四种权限修饰符对比
package 进阶.demo08_四种权限修饰符;

public class demo01_四种权限修饰符 {
    public static void main(String[] args) {

        

    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571815.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号