首页 > 编程语言 >【Java基础】方法重写Override

【Java基础】方法重写Override

时间:2022-09-06 15:22:42浏览次数:88  
标签:Java 方法 static 子类 Override 父类 重写 public

1.什么是方法重写

子类对父类中同名同参数的方法进行重写覆盖。

public class Person {

    public void say(){
        System.out.println("父类中的方法");
    }
}

public class Student extends Person{

}

执行以下语句时,调用的是父类中定义的方法,子类继承父类就具有了父类中的方法。

        Student student = new Student();
        student.say(); //父类中的方法

然而我们想自己写这个方法,不想用父类的。

public class Student extends Person{
    public void say(){
        System.out.println("子类中的方法");
    }
}

再次执行发现调用的是子类中的方法。

        Student student = new Student();
        student.say(); //子类中的方法

2.重写要求

(1)子类父类中,方法名和形参列表相同

(2)子类重写方法的权限修饰符不小于父类中方法的权限修饰符,例如父类中方法使用缺省,则子类中只能使用缺省或public,否则会报错。
image

(3)子类不能重写父类中声明为private权限的方法,因为父类中的方法权限为private,子类看不到,自然无法copy覆盖,此时在子类中写一样的方法相当于一个新的方法,而不是重写。

(4)返回值类型
    ① 父类中方法是void,则子类中方法只能是void。
    ② 父类中方法是A类型,则子类中方法可以是A类型或A类的子类。
    ③ 父类中方法是基本数据类型(double),则子类中方法必须是相同的基本数据类型(double)。

(5)子类重写方法抛出的异常 ≤ 父类被重写方法抛出的异常。

(6)static修饰
    ① 父类中使用static,子类中不使用,报错。
image

    ② 父类中使用static,子类中使用static,不会报错,子类的方法将父类的方法进行了隐藏,而非重写,参考链接

    ③ 父类中不使用static,子类中使用static,报错。
image

3.重载和重写的区别

  • 重载:多个同名方法,参数不同,编译器根据参数不同来区分,方法的调用地址在编译期就绑定了(早绑定或静态绑定),子类可以重载父类的同名不同参数的方法,不表现为多态性。

  • 重写:子类重写父类中的方法,自己实现,直到方法调用的那一刻,解释器才会确定所要调用的具体方法(晚绑定或动态绑定),变现为多态性

标签:Java,方法,static,子类,Override,父类,重写,public
From: https://www.cnblogs.com/zhishu/p/16661926.html

相关文章

  • Java-
    基本数据类型:1基本类型:byte二进制位数:8一个字节8个bit位2包装类:java.lang.Byte3最小值:Byte.MIN_VALUE=-1284最大值:Byte.MAX_VALUE=127 1基本类型:short......
  • java复习随笔(十三)——Stream流
    Stream流的生成方式Stream流的使用生成流通过数据源(集合,数组)生成流list.stream()中间操作一个流后面可以跟随零个或多个中间操作,其目的主要是打开流,做出某种程度的......
  • 肖sir__java__图集
    (1)修饰符Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:访问控制修饰符:default,public,protected,private非访问控制修饰符:final,abstract,sta......
  • java List排序
    2.1新建Comparator比较器List<Person>list=newArrayList<Person>(){};Collections.sort(list,newPersonComparator());classPersonComparatorimplements......
  • 金九银十,收下这份 Java String 面试题
    请点赞关注,你的支持对我意义重大。......
  • 力扣636(java)-函数的独占时间(中等)
    题目:有一个单线程CPU正在运行一个含有n道函数的程序。每道函数都有一个位于 0和n-1之间的唯一标识符。函数调用存储在一个调用栈上:当一个函数调用开始时,它......
  • java锁:第四章:读写锁
    理论:未使用读写锁的代码:packagecom.javaliao.backstage;importjava.util.HashMap;importjava.util.Map;classData{privatevolatileMapmap=newHashM......
  • JavaScript框架大战已结束,赢家只有一个
    投递人 itwriter 发布于2022-09-0323:44 评论(0) 有2143人阅读 原文链接 [收藏] « »框架之战是JavaScript社区中的热门话题,也是业界众多圣战之一。......
  • 【Java基础】面向对象的特征:继承性
    1.什么是继承继承表示两个类之间的一种关系。子类继承父类,则子类具有父类的属性和方法,同时可以扩展自己属性或功能。子类更具体,父类更抽象。2.为什么要有继承定义两......
  • 用 Rust 重写网站,性能提升了18倍!
    对于构建中小型网站/个人博客来说,Hakyll是一个不错的静态网站生成器库,9年前的JonasHietala正是选择了Hakyll编写博客网站。但随着时间的推移,网站出现各种问题,诸如速......