当前位置: 首页 > news >正文

Java的方法重写/覆盖

基本介绍:

方法覆盖/重写(override)就是子类有一个方法,和父类的某个方法的名称,返回类型,参数一样,把么我们就说子类的这个方法覆盖了父类的方法

快速入门案例:

package com.overrideLearn.override;public class override01 {public static void main(String[] args) {Dog dog = new Dog();dog.cry();//输出Dog类中的cry}
}
class Animal{public void cry(){System.out.println("动物叫唤");}
}class Dog extends Animal{//Dog是Animal子类//Dog的cry方法和Animal的cry()定义形式一样(名称,返回类型,参数)//这时我们就说dog的cry方法重写了Animal的cry方法`public void cry(){System.out.println("小狗汪汪叫");}
}

注意事项和使用细节:
方法重写也叫方法覆盖,需满足下面条件

1.子类的方法的形参列表,方法名称 要和父类方法的形参列表,方法名称完全一致

2.子类方法的返回类型要和父类方法的返回类型一样,或者是父类返回类型的子类 比如 父类返回类型是Object,子类返回类型是String(小可以传大,大不能传小)

class Animal{public Animal cry(){System.out.println("动物叫唤");return null;}
}class Dog extends Animal{//Dog是Animal子类//Dog的cry方法和Animal的cry()定义形式一样(名称,返回类型,参数)//这时我们就说dog的cry方法重写了Animal的cry方法`public Animal cry(){System.out.println("小狗汪汪叫");return null;}
}
class Animal{public Object cry(){System.out.println("动物叫唤");return null;}
}class Dog extends Animal{//Dog是Animal子类//Dog的cry方法和Animal的cry()定义形式一样(名称,返回类型,参数)//这时我们就说dog的cry方法重写了Animal的cry方法`public String cry(){System.out.println("小狗汪汪叫");return null;}
}

3.子类方法不能缩小父类方法的访问权限

public > protected > 默认 > private

//这样可以:
class Animal{protected Object cry(){System.out.println("动物叫唤");return null;}
}class Dog extends Animal{//Dog是Animal子类//Dog的cry方法和Animal的cry()定义形式一样(名称,返回类型,参数)//这时我们就说dog的cry方法重写了Animal的cry方法`public Object cry(){System.out.println("小狗汪汪叫");return null;}
}
//这样不行:
class Animal{protected Object cry(){System.out.println("动物叫唤");return null;}
}class Dog extends Animal{//Dog是Animal子类//Dog的cry方法和Animal的cry()定义形式一样(名称,返回类型,参数)//这时我们就说dog的cry方法重写了Animal的cry方法`private Object cry(){System.out.println("小狗汪汪叫");return null;}
}

方法重写与方法重载的比较:

习题:

//编写一个Person类,包括属性/private(name,age),构造器,方法say(返回自我介绍的字符串)
//编写一个Student类,继承Person类,增加id,score属性/private,以及构造器,定义say方法(返回自我介绍的信息)
//在main中,分别创建Person和Student对象,调用say方法输出自我介绍
package com.overrideLearn.override;public class overrideExercise {public static void main(String[] args) {Student student = new Student("小明",18,"905273090",99);System.out.println(student.say());}
}
//编写一个Person类,包括属性/private(name,age),构造器,方法say(返回自我介绍的字符串)
//编写一个Student类,继承Person类,增加id,score属性/private,以及构造器,定义say方法(返回自我介绍的信息)
//在main中,分别创建Person和Student对象,调用say方法输出自我介绍
class Person{private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String say(){return "我的名字是" + name + "我的年龄是" + age;}public String getName() {return name;}public int getAge() {return age;}
}class Student extends Person{private String id;private int score;public Student() {}public Student(String name, int age, String id, int score) {super(name, age);this.id = id;this.score = score;}public String say(){return "我的名字是" + getName() + " 我的年龄是" + getAge() + " 我的id是" + id + " 我的分数是" + score;}
}

http://www.dtcms.com/a/470112.html

相关文章:

  • 门户网站建站要求外国做家具的网站
  • 『 数据库 』MySQL复习(表的约束)
  • 房地产开发公司网站源码做高端网站的公司
  • 【vue】使用web worker上报日志:
  • MySQL 与Power BI 的作用,以及在数据分析中扮演的角色
  • k歌里的相片是通过网站做的吗typecho与Wordpress同步
  • 如何做中英版网站简单写文章的网站
  • Linux 进程通信——基于责任链模式的消息队列
  • 手机能做网站吗北京软件开发公司哪家专业
  • 物流网站的建设免费推广平台排行榜
  • iOS一直讲的单元格优化
  • 信阳网站seo用手机怎么做网站
  • 【Canvas技法】 卡通版太阳的三种画法
  • 词根学习笔记 | Agri系列
  • PHP解决跨域请求问题的两种实用方法
  • 语音大模型自监督训练思路
  • 辉芒微单片机FT60E12X,Touch 系列8位单片机MCU简要分析
  • w3c网站代码标准规范自己做的网站怎么接入网页游戏
  • 一篇文章详细解析 IPv4地址
  • 主办单位性质与网站名称不符绍兴专业做网站公司
  • C++ 简介
  • ValueTuple 详解
  • 框架--MyBatis
  • 1.C++基础(上)
  • cursor一些简单的使用心得官方的建议
  • 新能源汽车公司如何落地 ASPICE
  • 网站建设中的注册和登录页面网站开发技术期末考试题
  • react hooks
  • 建立数据分析与决策体系
  • 昂瑞微:全链条创新引领中国“芯”突围