假设类A有两个方法public void f()和public void g(),其中g()是多余的,并且不希望被用户使用。你可以通过以下两种方法做到:方法一:扩展A类,重写所有不需要的方法,在其中抛出异常。 class B extends A { public void g() { throw new UnsupportedOperationException(); } }方法二:使用代理方法。 class B { private A a = new A(); public void f() { a.f(); } }
唉……楼主呀……不推荐使用这个方法: 方法一:扩展A类,重写所有不需要的方法,在其中抛出异常。 class B extends A { public void g() { throw new UnsupportedOperationException(); } } 这叫“限制子类化”。是违反里氏替换原则的,应尽量避免使用!最好的做法还是: 把A,B公共的部分抽取出来C。让AB从C类继承只有不能这样做时,才 方法二:使用代理方法。 class B { private A a = new A(); public void f() { a.f(); } }
假设类A有两个方法public void f()和public void g(),其中g()是多余的,并且不希望被用户使用。你可以通过以下两种方法做到:方法一:扩展A类,重写所有不需要的方法,在其中抛出异常。
class B extends A {
public void g() {
throw new UnsupportedOperationException();
}
}方法二:使用代理方法。
class B { private A a = new A(); public void f() {
a.f();
}
}
方法一:扩展A类,重写所有不需要的方法,在其中抛出异常。
class B extends A {
public void g() {
throw new UnsupportedOperationException();
}
}
这叫“限制子类化”。是违反里氏替换原则的,应尽量避免使用!最好的做法还是:
把A,B公共的部分抽取出来C。让AB从C类继承只有不能这样做时,才
方法二:使用代理方法。
class B { private A a = new A(); public void f() {
a.f();
}
}