首页 > 编程语言 >java方法重写的语法要求

java方法重写的语法要求

时间:2024-05-27 11:11:17浏览次数:21  
标签:java dosome throws 语法 子类 父类 重写 public

 /*
 * 重写要遵循"两同两小一大"原则:
 * 1)两同:
 *   1.1)方法名相同
 *   1.2)参数列表相同
 * 2)两小:
 *   2.1)子类方法的返回值类型小于或等于父类的
 *       2.1.1)void时,必须相同
 *       2.1.2)基本类型时,必须相同
 *       2.1.3)引用类型时,小于或等于
 *   2.2)子类方法抛出的异常小于或等于父类的------异常之后
 * 3)一大:
 *   3.1)子类方法的访问权限大于或等于父类的---访问控制修饰符后
 */

 

一、两同:

方法名相同,参数列表相同

 

二、两小1:

子类方法的返回值类型需要小于或等于父类的方法的返回值类型。

具体要求如下:

 *       2.1.1)void时,必须相同

package aaf_overwrite;

import java.awt.*;
import java.io.IOException;

/**当子类重写超类含有throws声明异常抛出的方法时,对throws的重写规则*/
public class ThrowsDemo {
    public void dosome()throws IOException, AWTException {
    }
}


class SubClass extends ThrowsDemo{//子类SubClass重写父类ThrowsDemo的dosome()方法
    //子类重写父类的dosome()方法时: 父类方法的返回值类型是void时,子类方法返回值类型也需要是void(和父类相同)
    public void dosome() {
    }
}

 *       2.1.2)基本类型时,必须相同

package aaf_overwrite;

import java.awt.*;
import java.io.IOException;

/**当子类重写超类含有throws声明异常抛出的方法时,对throws的重写规则*/
public class ThrowsDemo {

    public int dosome(int x)throws IOException, AWTException {
        return x*x;
    }

}


class SubClass extends ThrowsDemo{//子类SubClass重写父类ThrowsDemo的dosome()方法

    //2.子类重写父类的dosome()方法时: 
    //父类方法的返回值类型是基本时,子类方法返回值类型需要和父类相同
    public int dosome(int x){//重写int dosome(int x)
        return x*x;
    }

}

 

 *       2.1.3)引用类型时,小于或等于

package aaf_overwrite;

import java.awt.*;
import java.io.IOException;

/**当子类重写超类含有throws声明异常抛出的方法时,对throws的重写规则*/
public class ThrowsDemo {
    public Object dosome(double y)throws IOException, AWTException {
        return y*y;
    }
}


class SubClass extends ThrowsDemo{//子类SubClass重写父类ThrowsDemo的dosome()方法

    //3.子类重写父类的dosome()方法时:
    // 父类方法的返回值类型是引用类型时,
    //子类方法返回值类型需要是父类方法返回值类型的子类型或和父类方法的返回值类型相同。
    public Double dosome(double y){//Object dosome(double y)
        return y*y;
    }
}

 

 

三、一大:

子类重写父类的方法时: 子类方法抛出的异常小于或等于父类的异常(需要是父类方法的子类异常)

上边的语法要求的具体内容如下:

  • 允许和父类方法抛出同样的异常
  • 允许不再抛出任何异常. 
  • 允许仅抛出部分异常
  • 允许抛出超类方法声明抛出异常的子类型异常
  • 不允许抛出额外异常(超类方法没有声明的且不存在继承关系的)
  • 不允许抛出超类方法抛出异常的超类型异常

测试代码如下:

package aaf_overwrite;

import java.awt.*;
import java.io.IOException;

/**当子类重写超类含有throws声明异常抛出的方法时,对throws的重写规则*/
public class ThrowsDemo {
    public void dosome()throws IOException, AWTException {
    }
}


class SubClass extends ThrowsDemo{//子类SubClass重写父类ThrowsDemo的dosome()方法
    //1.允许和父类方法抛出的异常相同
    //public void dosome()throws IOException, AWTException {
    //}

    //2.允许不再抛出任何异常
    //public void dosome(){
    //}

    //3.允许仅抛出部分异常
    //public void dosome()throws IOException{
    //}

    //4.允许抛出超类方法声明抛出异常的子类型异常
    //public void dosome()throws FileNotFoundException {
    //}

    //5.不允许抛出额外异常(超类方法没有声明的且不存在继承关系的)
    //public void dosome()throws SQLException {
    //}

    //不允许抛出超类方法抛出异常的超类型异常
    //public void dosome()throws Exception {
    //}
}

 

 

 

 

 

 

//父类大,子类小
class Coo{
	void show(){}
	double say(){return 0.0;}
	Doo sayHi(){return null;}
	public Coo test(){return null;}
}
class Doo extends Coo{
	//int show(){return 1;} //编译错误,void时必须相同
	//int say(){return 0.0;} //编译错误,基本类型时必须相同
	//Coo sayHi(){return null;} //编译错误,引用类型必须小于或等于
	public Doo test(){return null;}
}

                                                                                   2024-05-27   by zhaoyq





 

 

 

标签:java,dosome,throws,语法,子类,父类,重写,public
From: https://www.cnblogs.com/zhaoyongqi/p/18215118

相关文章

  • SCSS入门指南:基本语法与高效用法
    关于SCSS(SassyCSS)基本使用的文章概述:###1.SCSS简介*SCSS是一种CSS的扩展语言,它允许开发者使用更强大、更灵活的语法来编写样式表。*SCSS提供了变量、嵌套规则、混合宏等高级功能,使得CSS代码更加模块化和可维护。*SCSS最终被编译成标准的CSS文件,以供浏览器解析。###2.安......
  • 一个专为程序员设计的精致 Java 博客系统
    大家好,我是Java陈序员。今天,给大家介绍一个设计精致的博客系统,基于Java实现!关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。项目介绍bolo-solo——......
  • 【JAVA】Java如何使用Spring Boot进行Web服务开发
    文章目录前言一、函数解释二、代码实现三、总结前言在现代的微服务架构中,创建快速、可靠的Web服务已经成为一项基本技能。SpringBoot是一个出色的框架,它简化了Spring应用开发,使我们能够更快速地创建和部署Web服务。在这篇博客中,我们将探讨如何使用Java和SpringBoo......
  • Java JVM——1.JVM与Java体系结构
    前言作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题?✘ 运行着的线上系统突然卡死,系统无法访问,甚至直接OOMM!✘ 想解决线上JVMGC问题,但却无从下手。✘ 新项目上线,对各种JVM参数设置一脸茫然,直接默认吧,然后就JJ了。✘ 每次面......
  • Java项目-基于springboot+vue的旅游管理系统(源码+数据库+文档)​
    如需完整项目,请私信博主基于SpringBoot+Vue的旅游管理系统开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven随着科学技术的飞速发展,网络快速发展、人民生活的快节奏都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,旅游管......
  • Java项目-基于springboot+vue的简历系统(源码+数据库+文档)​
    如需完整项目,请私信博主基于SpringBoot+Vue的简历系统开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,简历系统当然也不......
  • Java线程组
    Java提供了一种在单个对象中组合多个线程的便捷方法。通过这种方式,通过单个方法调用暂停,恢复或中断线程组。注意:现在不推荐使用suspend(),resume()和stop()方法。Java线程组由java.lang.ThreadGroup类实现。ThreadGroup表示一组线程。线程组还可以包括其他线程组。线程......
  • Java关闭挂钩(shutdown hook)
    当JVM正常或突然关闭时,关闭挂钩可用于执行清理资源或保存状态。执行干净资源意味着关闭日志文件,发送一些警报或其他内容。因此,如果要在JVM关闭之前执行某些代码,请使用关闭挂钩(shutdownhook)。JVM什么时候关闭?JVM在以下情况下关闭:用户在命令提示符下按ctrl+c调用Syste......
  • Java 线程池优化
    1.Java线程池优化1.1.核心线程数1.2.任务队列1.2.1.LinkedBlockingQueue1.2.2.ArrayBlockingQueue1.2.3.SynchronousQueue1.2.4.总结1.3.最大线程数1.4.线程存活时间1.5.拒绝策略1.5.1.AbortPolicy(默认策略)1.5.2.CallerRunsPolicy1.5.3.DiscardPo......
  • C++技能进阶指南——多态语法剖析
            前言:多态是面向对象的三大特性之一。顾名思义,多态就是多种状态。那么是什么的多种状态呢?这里的可能有很多。比如我们去买火车票,有普通票,学生票;又比如我们去旅游,有儿童票,有成人票等等。这些都是多态的例子。具体转化为我们的编程思想就是:让不同类型......