Java:构造函数的访问修饰符

构造方法可以处于public、protected、private和默认四种访问级别之一。
public
public这里就不多说了
private
当构造方法为private级别时,意味着只能在当前类访问它,不能被继承,不能被其他程序用new创建实例对象。可以对比其他几种修饰符的作用:abstract修饰的类,不允许被实例化,这点和private修饰构造方法相同,但abstract修饰的类可以被继承,拥有子类,可以创建子类的实例;final类禁止被继承,这点和private修饰构造方法相同,但是final类可以用new创建实例对象。
protected
如果构造函数是protected,那么该类可以继承,可以在被包内其他类中产生实例,但是无法在包外或者子类以外的地方产生实例.

看一下下面的程序

package com.ustc.sub;

public class Base {
    protected Base() {
        System.out.println("haha");
    }
} 
package com.ustc.sub;

public class ProtectedDemo extends Base {
    public ProtectedDemo() {
        super();// 调用父类Base的构造函数,可以调用因为类的访问修饰符为protected
    }

    public static void main(String args[]) {
        ProtectedDemo obj = new ProtectedDemo();
        Base objBase = new Base();
    }
}
package com.ustc.sup;

import com.ustc.sub.Base;

public class ProtectedDemo1 {
    public static void main(String args[]){ 
        Base objBase = new Base();//不能调用因为访问修饰符为protected 
        } 
}



作用域 当前类 同一package 子孙类 其他package

public √ √ √ √

protected √ √ √ ×

friendly √ √ × ×

private √ × × ×

不写时默认为friendly
子孙类可以在同一包,也可以不一个包,此时以最大权限为准

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值