首页 > 其他 > 详细

public private protected default

时间:2019-04-12 17:15:59      阅读:127      评论:0      收藏:0      [点我收藏+]

public private protected default 

这几个限定访问控制符只是在编译阶段起作用,在运行阶段不起作用

技术分享图片

 

private修饰符 , 本类可以访问

default修饰符 , 本类,本包可以访问 (这是默认的,即什么都不写)

protected修饰符 ,本类,本包,子类可以访问

public修饰符  , 都可以访问

 

关于protected修饰符

protected是用来让子类可以访问父类的方法和属性的

必须有子类,而与子类所在的位置没有关系

对象是子类类型,当有多个子类时,必须是在本子类当中

 

package com.moreas.concurrency;

public class Person {

    private String name;
    int age;
    protected String color;

    public Person() {
    }

    public Person(String name, int age, String color) {
        super();
        this.name = name;
        this.age = age;
        this.color = color;
    }

    public void say() {
        System.out.println(this.name + " say: I am " + this.color + " Person");
    }
}
package com.moreas.concurrency.c;

import com.moreas.concurrency.Person;

public class BlackPerson  extends Person {

    public static void main(String[] args) {
        
        BlackPerson  p1 =  new BlackPerson();
        System.out.println("color:" + p1.color);//protected 
        
        Person p2 =  new BlackPerson();  //对象不是子类类型
        //String col =  p2.color; //编译出错 
    }
    
}
package com.moreas.concurrency.c;

import com.moreas.concurrency.Person;

public class Other extends Person {
    
    public static void main(String[] args) {

        BlackPerson  p1 =  new BlackPerson();  
       // System.out.println("color:" + p1.color);//protected //编译出错,不是在本子类当中
    }

}

 

下面是错误的理解,以为只要是在子类当中,就可以访问protected属性了

技术分享图片

 

public private protected default

原文:https://www.cnblogs.com/moris5013/p/10697082.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!