zoukankan      html  css  js  c++  java
  • Java访问修饰符

      private、protected、public是Java中的访问权限修饰符,可以用于修饰变量、方法和类。

     (更正:类只有default和public两种修饰符,内部类相当于成员,可以使用private、protected和public修饰

      private表示只能在本类才能访问;

      protected表示在同一个包的类中或者子类中可以访问;

      public表示在任何类中都可以访问;

      当不用这三个修饰符修饰时就是默认的访问权限,即在同一个包的类中可以访问。

      

      Java的访问权限是基于类的,而不是基于对象的:

     class  Parent
     {
         private  String name;
         protected String sex;
         public int age;
        
         public Parent()
         {
             name = "parent";
         }
     
         public void method1()
         {
            name = "Jack"; 
            Parent wife = new Parent();
            wife.name = "Lily";      // 可以访问wife的private属性name
         }
      
     }
     
     public class  Child   extends  Parent
     {
        
     }
     
     public  class  Test                             //Test类和Parent类、Child类不在一个包中
     {
        public static void main(String[] args)
         {
             Child  child = new Child();
             child.sex = "boy";        //不能访问child的属性sex,因为在Test类中,而Test类不是Parent类的子类(这句注释不准确)
             child.age =  3;    //可以在任何类中访问age属性
         }
    }

      上面的例子中有个错误,即使Test类继承自Parent类,child对象也无法访问sex属性。原因是,与父类不在同一个包中的子类只能访问自身从父类中继承来的protected属性,而不能访问父类实例以及父类的其他子类的实例的protected属性。

        与此类似的问题是,在其他类中不能访问Object类的protected的clone方法,尽管Object类是所有类的超类。

          关于protected的这个问题参考自以下博文:http://blog.csdn.net/ciawow/article/details/8262609

    参考资料 《Java核心技术》

  • 相关阅读:
    [ZJOI 2012]数列
    [JSOI 2011]柠檬
    sonar错误及修改方案
    mysql 查询该字段不包含中文
    service 事务
    mysql 不等于和null
    java文件编译为class文件
    主,副时间排序
    MySQL 按首字母排序
    excle导入
  • 原文地址:https://www.cnblogs.com/jqctop1/p/4664882.html
Copyright © 2011-2022 走看看