`
xo_tobacoo
  • 浏览: 384211 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

protected访问权限

    博客分类:
  • java
阅读更多

1、protected的类、类属变量及方法,包内的任何类,及包外的那些继承了此类的子类才能访问;

注意:子类如处于不同的包,则相互间不能访问继承自父类的方法。

所有不能访问的方法都已经被注释:

package packageA;

public class Base {
    public String publicStr = "publicString";
    protected String protectedStr = "protectedString";
    String defaultStr = "defaultString";
    private String privateStr = "privateString";

    public void print() {
        System.out.println("packageA.Base has access to");
        System.out.println("    " + publicStr);
        System.out.println("    " + protectedStr);
        System.out.println("    " + defaultStr);
        System.out.println("    " + privateStr);

        Base b = new Base(); // -- other Base instance
        System.out.println("    b." + b.publicStr);
        System.out.println("    b." + b.protectedStr);
        System.out.println("    b." + b.defaultStr);
        System.out.println("    b." + b.privateStr);
    }
}

--------------------------------------------------------------------------------

package packageA;

public class SubA extends Base {
    public void print() {
        System.out.println("packageA.SubA has access to");
        System.out.println("    " + publicStr + " (inherited from Base)");
        System.out.println("    " + protectedStr + " (inherited from Base)");
        System.out.println("    " + defaultStr + " (inherited from Base)");
        // -- not accessible - private elements are even not inherited
        // System.out.println(privateStr);

        Base b = new Base(); // -- other Base instance
        System.out.println("    b." + b.publicStr);
        System.out.println("    b." + b.protectedStr);
        System.out.println("    b." + b.defaultStr);
        // -- not accessible
        // System.out.println(b.privateStr);
    }
}

--------------------------------------------------------------------------------

package packageA;

public class AnotherA {
    public void print() {
        System.out.println("packageA.AnotherA has access to");
        Base b = new Base();
        System.out.println("    b." + b.publicStr);
        System.out.println("    b." + b.protectedStr);
        System.out.println("    b." + b.defaultStr);
        // System.out.println(b.privateStr);
    }
}

--------------------------------------------------------------------------------

package packageB;
import packageA.Base;

public class SubB extends Base {
    public void print() {
        System.out.println("packageB.SubB has access to");
        System.out.println("    " + publicStr + " (inherited from Base)");
        // -- protectedStr is inherited element -> accessible
        System.out.println("    " + protectedStr + " (inherited from Base)");
        // -- not accessible
        // System.out.println(defaultStr);
        // System.out.println(privateStr);

        Base b = new Base(); // -- other Base instance
        System.out.println("    b." + b.publicStr);
        // -- protected element, which belongs to other object -> not accessible
        // System.out.println(b.protectedStr);

        // -- not accessible
        // System.out.println(b.defaultStr);
        // System.out.println(b.privateStr);
    }
}

--------------------------------------------------------------------------------

package packageB;
import packageA.Base;

public class AnotherB {
    public void print() {
        System.out.println("packageB.AnotherB has access to");
        Base b = new Base();
        System.out.println("    b." + b.publicStr);
        // -- not accessible
        // System.out.println(b.protectedStr);
        // System.out.println(b.defaultStr);
        // System.out.println(b.privateStr);
    }
}

--------------------------------------------------------------------------------

import packageA.*;
import packageB.*;

// -- testing class
public class TestProtection {
    public static void main(String[] args) {
        // -- all classes are public, so class TestProtection
        // -- has access to all of them
        new Base().print();
        new SubA().print();
        new AnotherA().print();
        new SubB().print();
        new AnotherB().print();
    }
}

 

分享到:
评论

相关推荐

    java中protected的权限

    NULL 博文链接:https://837062099.iteye.com/blog/1609340

    OC访问变量权限

    @public ,@package,@private,@protected访问权限描述

    2. 定义一个Card类,表示扑克牌,该类包括下述成员

    (3) 有一个protected访问权限的方法getFace(),得到扑克牌的牌面值 (4) 有一个protected访问权限的方法getSuit(),得到扑克牌的牌面值 (5) 有一个重写方法toString(),返回表示扑克牌的花色和牌面值字符串(如...

    java《面向对象程序设计》实验报告一

    1.写一个名为Rectangle的类表示...定义protected访问权限的方法getFace(),得到扑克牌的牌面值; 定义protected访问权限的方法getSuit(),得到扑克牌的花色; 定义方法toString(),返回表示扑克牌的花色和牌面值字符串。

    用java代码来解析private、public、default、protected的权限问题

    用java代码来解析private、public、default、protected的权限问题

    类和对象c++

    编写一个People类.该类的数据成员有年龄age,身高height,...假设年龄的单位为岁,身高的单位厘米,体重的单位斤,要求所有数据成员为protected访问权限,所有成员函数为public,在主函数中通过对象直接访问类的所有成员函数.

    深入理解C++中public、protected及private用法

    初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂。今天本文就来十分分析一下C++中public、protected及private用法。相信对于大家深入掌握C++程序设计会有...

    子类的四种访问权限

    C++的类的成员只有public protected private这三种访问权限吗? 其实,对于有继承关系的子类来说,有四种访问权限,下载这篇文档,我将为您阐述第四种访问权限。

    演示C++中各种继承关系的访问权限

    方法F1无法被访问 B.只有在类O内才能访问方法F1  C.只有在类P内才能访问方法F1 D.只有在类Q内才能访问方法F1  (27)A.类O、P和Q的对象都可以访问方法F2 B.类P和Q的对象都可以访问方法F2  C.类0和Q的对象...

    Java零基础-访问控制权限修饰符.md

    它解释了public、private、protected和默认访问级别的含义和用法,以及它们在类、接口、成员变量和方法中的应用。 能学到什么 通过阅读本文档,您将学习以下内容: 不同访问控制权限修饰符的作用和使用场景 如何...

    浅析php面向对象public private protected 访问修饰符

    PHP中有三种访问修饰符,分别是: public(公共的、默认) protected(受保护的) private(私有的)public(公共的、默认)在PHP5中如果类没有指定成员的访问修饰符,默认就是public的访问权限。protected(受...

    PHP实现在对象之外访问其私有属性private及保护属性protected的方法

    protected表示受保护的访问权限,只有本类或子类或父类中可以访问; 比较经典的用法示例如下: <?php //父类 class father{ public function a(){ echo function a ; } private function b(){ echo ...

    理解java中的类的各种权限修饰符

    父子类可以是不同包 在不同包下面只有public 与 protected 可以访问,而且protected必须是在继承关系下才能够访问

    浅谈php中的访问修饰符private、protected、public的作用范围

    下面小编就为大家带来一篇浅谈php中的访问修饰符private、protected、public的作用范围。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    java实验报告 四个访问权限,抽象数据类型栈,计算器

    编写四个类A、B、C、D,其中类A、B在同一个包中,类C、D在另一个包中,且类C为类A的子类,通过这四个类来测试private,protected,public和friendly四个访问权限的区别。实现栈的基本操作。实现计算器。

    浅析Java中的访问控制权限

    主要介绍了浅析Java中的访问控制权限,在Java中,提供了四种访问权限控制,分别是默认访问权限、public、private以及protected,感兴趣的小伙伴们可以参考一下

    asp.net 修饰符介绍(关于public、private、protected、internal)

    protected修饰符用于设置类或类成员的访问权限仅为所属类及子类的内部。 3.internal修饰符 internal修饰符修饰的类或类成员的访问权限为同一程序集内部,C#默认的类访问修饰符即为internal。 4.public修饰符 public...

    浅析java修饰符访问权限(动力节点Java学院整理)

    Java有四种访问权限,其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符,下面通过本文给大家简单介绍下java修饰符访问权限相关知识,感兴趣的朋友一起学习吧

    概述C++中的 public protected private friend关键字的用法

    一个C++类中的变量如果如下关键字作为修饰符. 1. public: 程序的任何地方都可以访问. 2 protected: 只有类本身及其派生...1、当在类的内部使用这三个关键字,表示访问权限:  public: 可以被任意访问。  protected:

Global site tag (gtag.js) - Google Analytics