赞
踩
Protected是一个访问权限修饰限定符,被它修饰的属性和方法可以在子类中访问,即使是在不同的包下。
父类:
- // 为了掩饰基类中不同访问权限在子类中的可见性,为了简单类B中就不设置成员方法了
- // extend01包中
- class B {
- private int a;
- protected int b; // 被protected修饰
- public int c;
- int d;
- }
- }
同一个包中的子类,可以访问被protected修饰的属性/方法
- // extend01包中
- // 同一个包中的子类
- class D extends B{
- public void method(){
- // super.a = 10; // 编译报错,父类private成员在相同包子类中不可见
- super.b = 20; // 父类中protected成员在相同包子类中可以直接访问
- super.c = 30; // 父类中public成员在相同包子类中可以直接访问
- super.d = 40; // 父类中默认访问权限修饰的成员在相同包子类中可以直接访问
- }
- }
不同包中的子类,可以访问被protected修饰的属性/方法
- // extend02包中
- // 不同包中的子类
- class C extends B {
- public void method(){
- // super.a = 10; // 编译报错,父类中private成员在不同包子类中不可见
- super.b = 20; // 父类中protected修饰的成员在不同包子类中可以直接访问
- super.c = 30; // 父类中public修饰的成员在不同包子类中可以直接访问
- //super.d = 40; // 父类中默认访问权限修饰的成员在不同包子类中不能直接访问
- }
- }
不同包中的普通类,不能访问被protected修饰的属性/方法
- // extend02包中
- // 不同包中的类
- class TestC {
- public static void main(String[] args) {
- C c = new C();
- c.method();
- // System.out.println(c.a); // 编译报错,父类中private成员在不同包其他类中不可见
- // System.out.println(c.b); // 父类中protected成员在不同包其他类中不能直接访问
- System.out.println(c.c); // 父类中public成员在不同包其他类中可以直接访问
- // System.out.println(c.d); // 父类中默认访问权限修饰的成员在不同包其他类中不能直接访问
- }
- }
1、被final修饰的属性,不能被修改
- final int a = 20;
- a = 100;//编译出错
2、被final修饰的方法,不能被重写
在多态中会介绍
2、被final修饰的类,不能被继承(密封类)
- final class A {
- int a;
- }
- class B extends A{ //编译出错
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。