首页 > 其他 > 详细

继承—方法重写

时间:2021-05-03 22:55:54      阅读:32      评论:0      收藏:0      [点我收藏+]

方法重写

  1. 重写都是方法的重写,与属性无关

  2. 静态方法和非静态方法的差别非常大,不能乱写static

  3. 静态方法:方法的调用只和左边,定义的数据类型有关

package com.oo.oop.rewrite;
?
public class B {
   public static void test(){
       System.out.println("B=>test()");
  }
}
?

 

package com.oo.oop.rewrite;
?
public class A extends B{
   public static void test(){
       System.out.println("A=>test()");
  }
}
?

 

package com.oo;
?
?
import com.oo.oop.rewrite.A;
import com.oo.oop.rewrite.B;
?
// 一个项目应该只有一个main()方法
public class Application {
   //静态方法和非静态方法区别非常大
       //静态方法 //方法的调用只和左边,定义的数据类型有关
   public static void main(String[] args) {
?
       A a = new A();
       a.test();
?
       //父类的引用指向了子类
       B b=new A();//子类重写了父类的方法(重写只和非静态方法有关)
       b.test();
?
?
  }
}
?

出现的结果是: A=>test() B=>test()


  1. 非静态的方法才是重写

  2. 重写的关键词只能是public不能是private

package com.oo.oop.rewrite;
?
public class B {
   public  void test(){
       System.out.println("B=>test()");
  }
}
?

 

package com.oo.oop.rewrite;
?
public class A extends B{
   //Override 重写
   @Override//注解:有功能的注释
   public void test() {
       System.out.println("A=>test()");
  }
}
?

 

package com.oo;
?
?
import com.oo.oop.rewrite.A;
import com.oo.oop.rewrite.B;
?
// 一个项目应该只有一个main()方法
public class Application {
   //静态方法和非静态方法区别非常大
       //静态方法 //方法的调用只和左边,定义的数据类型有关
       //非静态方法:重写
   public static void main(String[] args) {
?
       A a = new A();
       a.test();
?
       //父类的引用指向了子类
       B b=new A();//子类重写了父类的方法(重写只和非静态方法有关)
       b.test();
?
?
  }
}
?

出现的结果则是:

A=>test() A=>test()


重写的特点

重写需要有继承关系,且是子类重写父类 方法

重写:子类的方法和父类必须一致,且方法体不同

  1. 方法名必须相同

  2. 参数列表必须相同

  3. 修饰符:范围可以扩大,不能缩小。(public>protected>Default>private)

  4. 抛出的异常:范围可以缩小,不能扩大。


 

为什么要重写

  1. 父类的功能子类不一定需要或者不一定满足

Alt+Inster-->override

继承—方法重写

原文:https://www.cnblogs.com/Share-my-life/p/14727863.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!