Java中的覆盖和扩展有什么区别?

时间:2015-08-24 16:41:58

标签: java

final关键字可以与方法和类一起使用,但是如果我们将它与方法一起使用那么方法不能被覆盖,如果我们将它与类一起使用那么它不能是扩展意味着什么?为此请告诉我覆盖和扩展之间的主要区别是什么?

例如下面的程序给出了编译错误(编译时错误):

Class Bike{  
  final void run(){
    System.out.println("running");
  }  
}  

class Honda extends Bike{  
   void run(){
      System.out.println("running safely with 100kmph");
   }  

   public static void main(String args[]){  
   Honda honda= new Honda();  
   honda.run();  
   }  
}  

1 个答案:

答案 0 :(得分:0)

  1. 代码!并修复格式问题!
  2. lass Bike {
        final void run() {
            System.out.println("running");
        }
    }
    
    class Honda extends Bike {
        void run() {
            System.out.println("running safely with 100kmph");
        }
    
        public static void main(String args[]) {
            Honda honda = new Honda();
            honda.run();
        }
    }
    
    1. 修正类声明:
    2. class Bike {
          final void run() {
              System.out.println("running");
          }
      }
      
      class Honda extends Bike {
          void run() {
              System.out.println("running safely with 100kmph");
          }
      
          public static void main(String args[]) {
              Honda honda = new Honda();
              honda.run();
          }
      }
      
      1. 方法上的final关键字意味着无法被覆盖,这意味着:
      2. 例如,我有一个班级Dog

        public class Dog {
            final void bark() {
                System.out.println("Woof!");
            }
        }
        

        我有一只狼:

        class Wolf extends Dog {
        
        }
        

        Wolf无法覆盖bark方法,这意味着无论如何,它都会打印Woof!。但是,这可能是你想要的:

        class Bike {
            void run() {
                System.out.println("running");
            }
        }
        
        class Honda extends Bike {
            @Override
            void run() {
                System.out.println("running safely with 100kmph");
            }
        
            public static void main(String args[]) {
                Honda honda = new Honda();
                honda.run();
            }
        }