用实例谈关于修饰符的经验

1、protected

在Observable里面有这么个方法:

protected synchronized void setChanged() {
changed = true;
}

在它的子类里面可以调用:

package com.gzmu.observer.observable;

import java.util.Observable;

public class Publisher extends Observable {

private String magazineName;

public String getMagazineName() {
return magazineName;
}

public void publish(String magazineName) {
magazineName = magazineName;
//这里算是见识到了,protected修饰的方法,在 子类里面可以调用。但在其它的类里边,就算是拿到了子类的实例,也不能调用。
setChanged();
notifyObservers(this);
}

}

在其它的类里边不能调用,拿到了子类的引用也不能:

package com.gzmu.observer.test;

import org.junit.Test;

import com.gzmu.observer.observable.Publisher;
import com.gzmu.observer.observable.TVStation;
import com.gzmu.observer.observer.Reader;

public class TestCase {

@Test
public void register() {

Reader reader = new Reader();

Publisher publisher = new Publisher();
publisher.addObserver(reader);

// publisher.publish("Kent.Kwan的技术空间");
//上面的那行代码是在publish方法里面调用setChanged,我现在想不能过publish方法,而是直接调用setChanged,尝试如下:

publisher.setChanged() XXXX错错错!提示没有这么方法,方法不可见

//通过这次经验算是真正理解了protect修饰符的威力了。

}

}


扩散联想:

2、private 。肯定是在子类里面也不能调用,只有在原始类里面才可以调用的方法。


3、public 。 如果是public,那上面例子中的方法就可以正常调用了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值