首页 > 其他分享 >Day54 面向对象11:方法重写

Day54 面向对象11:方法重写

时间:2024-01-20 15:33:58浏览次数:29  
标签:11 静态方法 Day54 方法 面向对象 子类 test 父类 重写

面向对象11:方法重写(子类父类必须为非静态方法,

无 static)

!重点:先看笔记!

重写:需要有继承关系,是子类重写父类的方法!//重写只针对方法   不针对属性或其它的 
    1.方法名必须相同
    2.参数列表列表必须相同
    3.修饰符:范围可以扩大: public>Protected>Default>private
    4.抛出的异常:范围,可以被缩小,但不能扩大:ClassNotFoundException --> Exception(大)

重写:子类的方法(方法名、参数列表)和父类必须要一致;方法体(方法里面的各自内容)不同!

为什么需要重写:
       1.父类的功能,子类不一定需要,或者不一定满足!
       Alt + Insert 快捷键: override;

重写只跟非静态方法有关 且只能是子类重写父类的方法

重写的关键词也只能是public

!子类重写父类的方法过程

下面详细看下代码的过程:

1.A类和B类都是静态方法(有static时)

new的都是A 结果却不同

父类B 子类A

a.test();调用的是A的方法

b.test();调用的是B的方法 父类的引用指向了子类 B b = new A();

2.A类和B类都同时去掉static 变成非静态方法

把A类的原先方法删除

Alt + Insert 快捷键 选择Override Methods 方法重写

自动跳出下图的方法

自动填充的方法中

super.test(); --------------------> 默认调用的是父类的test

把这行代码删掉 自行修改替换成 System.out.println("A=>test()");

再运行程序,看下图:

发现结果跟有static关键词的静态方法的结果 大不相同

**由于子类(A类)重写了父类(B类)的方法 **

导致b.test();调用的是A类的方法

!注意点:

重写只跟非静态方法有关 B b = new A(); 子类重写了父类的方法

重写的关键词也只能是public

所以静态方法 和非静态方法的区别很大

B(父类)

package com.oop.demo06;

//重写都是方法的重写,和属性无关
public class B {

    public  void test(){  //把关键词static去掉
        System.out.println("B=>test()");
    }
}

A(子类)

package com.oop.demo06;

//A类继承B类
public class A extends B{

//Alt + Insert快捷键

    //Override 重写
    @Override//注解:有功能的注释!
    public void test() {
        System.out.println("A=>test()");
    }
}

Application

package com.oop.demo06;

public class Application {

    //静态方法(有static)和非静态的方法区别很大!
    //静态方法: //方法的调用只和左边,定义的数据类型有关

    //非静态方法:重写
    public static void main(String[] args) {
        
        A a = new A();
        a.test();//A

        //父类的引用指向了子类
        B b = new A();//子类重写了父类的方法
        b.test();//A
    }
}

Application的结果:

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

标签:11,静态方法,Day54,方法,面向对象,子类,test,父类,重写
From: https://www.cnblogs.com/baixiaofan/p/17976513

相关文章

  • Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Jan 2024)
    Windows11version23H2中文版、英文版(x64、ARM64)下载(updatedJan2024)Windows11,version23H2,2024年1月更新作者主页:sysin.orgWindows11目前版本所有的日期都按照ISO8601格式列出:YYYY-MM-DD)服务频道版本服务选项上市日期最后修订日期最新版本......
  • 20240119方程图像研究
    事情起因:研究人员:csj、lqy、xzq、yjf方程图像研究要求:描点法画图(使用卡西欧),在\(x\)轴上任取值,对于给定\(x_0\),应在有限时间内求出所有对应的\(y\)。草图绘制(直接绘制):综合方程性质(如定义域、单调性、对称性),明确区间单调性及端点,利用对称性作图、或化归为已知方程并求出其......
  • 调光高辉度高精度调光细腻无频闪24V 48V12V60VLED升压型恒流驱动器H6911
    H6911是一款外围电路简洁的宽调光比升压调光LED恒流驱动器,可以实现高精度的恒流效果,输出电流恒流精度≤±3%,可适用于2.6-40V输入电压范围的LED恒流照明领域,输出耐压仅由MOS耐压决定。特征:启动电压 2.5V内置40V的LDO供电超低待机功耗转换效率>95%固定开关频率支持PWM方波信号调光支......
  • (11)Powershell赋值运算符(二)
    (11)Powershell赋值运算符(二)上一节介绍了Powershell赋值运算符中的=,+=,-=,详细内容参考这里。本节介绍Powershell赋值运算符中的*=,/=,%=,++,--。1.乘法赋值运算符(*=)乘法赋值运算符(*=)对数字值执行乘法或追加指定数目的变量字符串值副本。如果变量是单个......
  • C++11原子变量:线程安全、无锁操作的实例解析
     在C++11中,原子变量(std::atomic)提供了一种线程安全的方式来操作共享变量。下面是一个简单的例子,演示了C++11原子变量的用法。#include<iostream>#include<atomic>#include<thread>std::atomic<int>counter(0);//声明一个原子整数变量voidincrementCounter(int......
  • java面向对象基础语法之两个对象的内存图
    一:概述在相关文章前面说明了一下一个对象的内存图,在这里将继续说明两个对象的内存图。二:具体说明<1>实例代码Student类publicclassStudent{Stringname;intage;Stringaddress;publicvoidstudy(){......
  • Git必知必会基础(11):撤销操作
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/10854115.html数据准备 说明:下面对file的操作,都可以用通配符gitadd<file>...比如:gitadd*.txt gitrestore<file>...比如:gitrestore--staged*.txt 修改文件(已提交过,文件已在本地仓库中)撤销:对......
  • 面向对象的三大特征
    面向对象的三大特性封装packagecom.zzl.oop2.Demo1.Demo4;//类private:私有publicclassStudent1{//名字privateStringname;//学号privateintid;//性别privateStringsex;privateintage;//提供一些可以操作属性的方法......
  • $20240119$ 练习题解
    \(20240119\)练习题解CF472D通过尝试我们容易发现,与点\(1\)最近的点一定是直接儿子。我们要是把它作为突破点,那就成功了一半了。假设点\(2\)与点\(1\)最近,又假设我们可以用函数\(F(x)\)来确定\(x\)点的子树形态。那我们会发现如果我们还有剩余的节点,那么剩余的节点......
  • 寒假生活指导11
    importjsonimportjsonpathobj=json.load(open('073__爬虫_解析_jsonpath.json','r',encoding='utf-8'))#书店所有书的作者#author_list=jsonpath.jsonpath(obj,'$.store.book[*].author')#print(author_list)#所有的作者#author......