现在就有这个奇怪地问题。

解决方案 »

  1.   

    可以么?
    public的定义不就是对外开放的么?不然还有啥意义啊?
      

  2.   

    不用考虑这种问题class Super{
        public void api(){}
    }class Sub extends Super{
        //...
        //"阻止别人使用我父类继承下来的public 方法。"
    }Super sub = new Sub();
    sub.api();//难道不能call到Sub的api接口?多态何在?!
      

  3.   

    class W{
       public void f(){
          System.out.println("belong W");
       }
    }
    public class UU extends W{
       public static void main(String args[]) {
          new UU().f(); 我不想别人使用这个f()方法。如果屏蔽掉他。
       }
    }
      

  4.   

    final class W{
    }
    不让别人继承。
      

  5.   

    我晕死你,没有办法做到 改成private吧你提的问题 都好 bt 你思维 好乱,别怪我说实话
      

  6.   


    class W{
       public void f(){
          System.out.println("belong W");
       }
    }
    class M
    {
    private W w = new W();
    private final void f() {
    w.f();
    }
    }public class U extends M{ public static void main(String[] args) {
    new U().f();
    }
    }加个中间层。
      

  7.   

    顶楼上的,楼主你父类的方法连子类都不让用,那你public干嘛改成private
      

  8.   

    覆盖那个方法,抛OperationNotSupportedException
      

  9.   

    protected 是这个吗?不过同一个包下面还是可以访问的
      

  10.   

    很多人说final,final能阻止使用吗?不能吧.........
      

  11.   

    提供一个思路给lz:
    可以用一个类来包装你的类,
    就是用引用代替继承,
    比如:
    class A{
    public void a();
    public void b();
    public void c();
    }
    class B{
     private A a = new A();
     public void a(){
      a.a();
     }
    public void c(){
     a.c();
    }
    }
    这样b这个方法就被隐藏了。
    然后让别人用你这个B代替直接用A不知道可行否,lz自己试试吧good luck
      

  12.   

    反射被修改之后会保存回去 *.class
      

  13.   

    这就是继承啊!
    都知道你祖上传个宝贝下来,赖不掉的。
    final是不让修理,东西还在。
      

  14.   


    class SuperClass{
        public void a(){
          //CODE
        }
    }class SubClass extends SuperClass{
         public void a(){
           throw new UnsupportedOperationException();
         }     public void b(){     }
    }
      

  15.   

    不想被继承就用final不用被其它类用 private
      

  16.   

    难不成 楼主的 意思是 只有自己可以用 不许别人用?class Test9A{
    public void f(String password){
    if(!password.equals("123")){
    return;
    }
    /*
     * 业务逻辑
     * */
    }
    public void f2(){

    }
    }public class Test9 extends Test9A{ public void f(String password){
    super.f(password);//要密码才能用
    }

    }
    楼主的 这个 问题让我想起了 另外一个问题
    比如一个 方法的参数 要求只能在 0-10 之间 问 在编译的时候怎么判断?不是在运行的时候
    我一直没有想到
      

  17.   

    有一个方法可以~~~你在你父类的F()方法中线判断是不是W调用了这个方法,而且你的W是final就行了
      

  18.   

    唉 我晕死了 
    这个就不要public就行
    用Java默认类型的就行
    这样包外不管是继承还是不继承都不能访问它了
    例如
    package myapi;public class MyClass {
    void showDefault(){
    System.out.println("MyClass default Show");
    }        public void showPublic()
           {
    System.out.println("MyClass public Show");
           }
    }
    //把它打包成jar那样别人就无法访问它的showDefault就算继承也无法访问
    //但继承与MyClass的类可以访问showPublic 也就实现了showDefault方法
    //可以被同一包内的所有对象共享,但发布的jar就保护了它的安全
      

  19.   

    晕,这么多人,只有14楼和25楼回答对了。
    Java给了派生类不实现其超类中某些接口的自由,就是使用UnsupportedOperationException异常。
    这在很多场合都有用,大家可以去看Java API,所有集合类的add()和remove()方法都是声明抛出UnsupportedOperationException异常的,这就意味着你可以继承某个集合类(如ArrayList),覆盖它的remove(),抛出一个UnsupportedOperationException异常,从而得到一个只能添加不能删除的ArrayList。
      

  20.   

    定义为public别人就可以使用了,如果想阻止别人改写它,就加final修饰符
      

  21.   

    有个办法  interface A {  PUUBLIC VOID D ();}
              Class B {
      public void test(){ system.out.println("父类方法")}
    }class c extends D emlpments A{
      }   A test_c  =new c();   test_.test() ; 报错        没测试应该是这样吧