首页 > 其他分享 >继承的重写

继承的重写

时间:2023-09-21 18:02:23浏览次数:32  
标签:super 构造方法 继承 子类 println 父类 重写 public

1.继承中方法的重写

重写(override)

概念:在继承关系中,方法的名称一样,参数列表也一样

重写(overide):方法的名称一样,参数列表【也一样】。也叫方法的覆盖,覆写。

重载(overload):方法的名称一样,参数列表【不一样】

方法覆盖重写的特点:创建的是子类对象,则优先用子类方法。

2.方法覆盖重写的注意事项:

2.1必须保证父子类之间的方法的名称相同,参数列表也相同

@override:写在方法的前面,用来检测是不是有效的正确覆盖重写

这个注释就算不写,只要满足要求,也是正确的方法覆盖重写

2.2.子类方法的返回值必须【小于等于】父类方法的返回值类型

小扩展:java.lang.object类是所有类的公共最高父类。java.lang.String就是object的子类

2.3子类方法的权限必须【大于等于】父类方法的权限修饰符。

小扩展:public>protected>(default)>private

备注:(default)不是关键字default,而是什么都不写,留空。

3.手机案例

继承的重写_父类

1 public class Phone {
 2     //老手机
 3     public void call(){
 4         System.out.println("打电话");
 5     }
 6     public void send(){
 7         System.out.println("发短信");
 8     }
 9     public void show(){
10         System.out.println("显示号码");
11     }
12 }
13 
14 
15 
16 //定义的一款新手机,使用老手机作为父类。
17 public class NewPhone extends Phone {
18     @Override
19     public void show(){
20         System.out.println("显示号码");
21         System.out.println("显示图片");
22     }
23 
24 }
25 
26 
27 
28 
29 public class Demo01Phone {
30     public static void main(String[] args) {
31         Phone p1 = new Phone();
32         p1.call();
33         p1.send();
34         p1.show();
35         System.out.println("________________________");
36 
37         NewPhone np = new NewPhone();
38         np.call();
39         np.send();
40         np.show();
41 
42     }
43 }

4.继承中构造方法的访问特点

继承关系中,父子类构造方法的访问特点:

1.子类构造方法当中有一个隐含的“super()”调用,所以一定是先调用父类构造,后执行子类构造

2.子类构造可以通过super关键字来调用父类重载构造。

3.super的父类构造调用,必须是子类构造方法的第一个语句,不能一个子类构造调用多次super构造

总结:子类必须调用父类构造方法,不写则赠送super(),写了则用写的指定super调用,super只能有一个,还必须是第一个。

1 public class Fu0 {
 2     public Fu0(){
 3         System.out.println("父类无参构造");
 4     }
 5     public Fu0(int num){
 6         System.out.println("父类有参构造!");
 7     }
 8 }
 9 
10 
11 
12 public class Zi0 {
13     public Zi0(){
14         super(); //在调用父类无参构造方法
15       //  super(20);//在调用父类重载的构造方法
16         System.out.println("子类构造方法");
17     }
18     public void method(){
19        // super();  //错误写法!只有子类构造方法,才能调用父类构造方法
20     }
21 }
22 
23 
24 public class DemoConstructor {
25     public static void main(String[] args) {
26         Zi0 zi = new Zi0();
27     }
28 
29 }

4.super关键字的三种用法

继承的重写_构造方法_02

继承的重写_子类_03

5.This关键字的三种用法

继承的重写_父类_04

继承的重写_父类_05

继承的重写_java_06

6.Super和this关键字图解

继承的重写_子类_07

7 java继承的三个特点

继承的重写_父类_08



标签:super,构造方法,继承,子类,println,父类,重写,public
From: https://blog.51cto.com/u_16082673/7555771

相关文章

  • 继承
    1.继承解决的问题:共性的抽取 。父类(基类,超类),子类(派生类)1publicclassEmployee{2publicvoidmethod(){3System.out.println("方法执行!");4}5}678publicclassTeacherextendsEmployee{91011}12131415publicclassDem......
  • C模拟CPP的方法重写(override)和多态
    1.所谓override,就是子类中重新实现了父类中的某一方法(子类和父类的同一个方法的方法体不同)2.所谓多态,最显著的一个特点就是父类指针指向不同的子类对象时,运行同一个方法会有不同的行为3.C语言模拟继承时,父类对象必须是子类对象的第一个成员4.理解了C的父类结构体指针子类结......
  • python入门基础(14)--类的属性、成员方法、静态方法以及继承、重载
    上一篇提到过类的属性,但没有详细介绍,本篇详细介绍一下类的属性一、类的属性方法是用来操作数据的,而属性则是建模必不的内容,而且操作的数据,大多数是属性,比如游戏中的某个boss类,它的生命值就是属性(不同级别的boss,有不同的生命值),被攻击方法(不同的攻击,伤害值不同),当boss被攻击......
  • Java学习之路--oop--面向对象编程(封装、继承、多态)01
    packagecom.oop.demo01;importjava.io.IOException;//什么是面向对象/*面向对象编程:Object-OrientedPrograming(简称OOP)面向对象编程的本质就是:**以类的方式组织代码,以对象的组织(封装)数据抽象三大特性:封装继承多态*///Demo01-类publicclassDemo01{publicstaticvoid......
  • Java学习之路--oop--面向对象编程(封装、继承、多态)03
    packagecom.oop.demo04;/*封装:设计程序要追求“高内聚,低耦合”属性私有,get/set封装的意义:1.提高程序的安全性,保护数据2.隐藏代码的实现细节3.统一接口4.系统的可维护性增加*/publicclassApplication{publicstaticvoidmain(String[]args){Students1=newS......
  • Java学习之路--oop--面向对象编程(封装、继承、多态)02
    packagecom.oop.demo02;//一个项目应该只存一个main方法publicclassApplication{publicstaticvoidmain(String[]args){//new实例化了一个对象Personperson=newPerson("无言");System.out.println(person.name);}}////类:抽象......
  • 类,封装,继承,多态
    Student.java学生类:importjava.util.Objects;importjava.util.Scanner;publicclassStudent{staticintage;staticStringid,subject;staticStringname="张晗";//name="张晗"//非法,因为在class类中,赋值操作语句只允许在成员函数中才可......
  • JAVA17/JAVA21继承和抽象类
    day07-JAVAOOP课程目标1.【理解】什么是继承2.【掌握】继承的使用3.【理解】继承中的成员的特点4.【理解】super和this的作用5.【理解】什么是抽象类6.【掌握】抽象的使用继承继承概述​ 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,这个类就是......
  • 封装,继承,多态(下)
    8.5多态一个对象可以有多种形态。一个对象现在可以是学生类的对象,也可是老师类的对象。要形成多态必须是父类对象中存放子类的实例,用父类对象去调用子类重写的方法。语法:父类对象名=new子类();例如:QianFengstu=newStudent();QianFengtea=newTeacher();类图,可以反映出一......
  • 面向对象 继承修改默认值
    classClass_1:str_1='1'def__init__(self,str_1=str_1):self.str_1=str_1classClass_2(Class_1):#否则TypeError:Class_2.__init__()takes1positionalargumentbut2weregivendef__init__(self,str_1):super......