读书人

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

发布时间: 2013-02-18 10:50:49 作者: rapoo

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

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,那上面例子中的方法就可以正常调用了。



读书人网 >移动开发

热点推荐