java一个类可以同时被访问吗,JAVA中一个protected类里的内部类,在其他类中可以访问吗?...

匿名用户

1级

2019-02-20 回答

public,protected,default,private,这四种级别的修饰符都可以用来修饰类、方法和字段。

包外 子类 包内 类内

public yes yes yes yes

protected no yes yes yes

default no no yes yes

private no no no yes

protected 除了不同包不能访问 ,其他都能访问的

而且你的理解不对,被设置成protected的类,里面的内部类 是不可以 被其他类访问的。builder类是AlertDialog的内部类,而且是静态的,AlertDiaglog当然能调用。

。AlertDialog声明protected的构造函数就防止了外部代码不通过builderd类而直接去new对象而已。

追问:

是不是理解为设定为protected的类必须透过内部类的新建对象?

追答:

设置成内部类的真正原因是: 由于对话框类 有许多参数,  而Builder内部类返回值也是Builder对象,这样可以链式一路点下去设置 参数,为了方便才这么设计的。 这是Java中的一种设计模式。  不是protected类必须通过内部类新建对象。而是设置成 Aalertdialog的构造方法为protected,外部不能new。

追问:

一路点下去,意思是不是就是Builder.a.c之类的?假设a,c存在的话,那么a是Builder的方法?然后c是隶属于a方法里面的方法或者内部类咯?能这样理解吗?存不存在一种可能就是a,c都是Builder的方法?一直很想问这个问题了。。。。

追答:

你看下他的源码就知道了啊 !!

AlertDialog.Builder builder =newAlertDialog.Builder(this);

builder.setMessage("Are you sure you want to exit?")

.setCancelable(false)

.setPositiveButton("Yes",newDialogInterface.OnClickListener(){

publicvoid onClick(DialogInterface dialog,int id){

MyActivity.this.finish();

}

})

.setNegativeButton("No",newDialogInterface.OnClickListener(){

publicvoid onClick(DialogInterface dialog,int id){

dialog.cancel();

}

});

一直点下去 链式 设置属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值