Java,按照要求学全学准实现该类中的方法

java中子类覆盖父类方法所必须满足的条件...
java中子类覆盖父类方法所必须满足的条件
子类重写(覆盖)父类的方法必须满足的条件:
1.父类中的方法在子类中必须可见,即子类继承了父类中的该方法(可以显式的使用super关键字来访问父类中的被重写的方法), 如果父类中的方法为private类型的,那么子类则无法继承,也无法覆盖。 2.子类和父类的方法必须是实例方法,如果父类是static方法而子类是实例方法,或者相反都会报错。 如果父类和子类都是static方法,那么子类隐藏父类的方法,而不是重写父类方法。
3.子类和父类的方法必须要具有相同的函数名称、参数列表,并且子类的返回值与父类相同或者是父类返回类型的子类型(jdk1.5之后)。 如果方法名称相同而参数列表不同(返回类型可以相同也可以不同),那么只是方法的重载,而非重写。 如果方法名称和参数列表相同,返回值类型不同,子类返回值类型也不是父类返回值类型的子类,编译器就会报错。
4.子类方法的访问权限不能小于父类方法的访问权限(可以具有相同的访问权限或者子类的访问权限大于父类)。 访问权限由高到低:public、protected、包访问权限、private。如果子类方法的访问权限低于父类,则编译器会给出错误信息
5.子类方法不能比父类方法抛出更多的编译时异常(不是运行时异常),即子类方法抛出的编译时异常或者和父类相同或者是父类异常的子类。
二、源代码
package tong.yue.day4_264;
import java.io.FileNotFoundE
import java.io.IOE
import javax.swing.JB
import javax.swing.JC
* 子类重写(覆盖)父类的方法必须满足的条件:
* 1.父类中的方法在子类中必须可见,即子类继承了父类中的该方法(可以显式的使用super关键字来访问父类中的被重写的方法),
* 如果父类中的方法为private类型的,那么子类则无法继承,也无法覆盖。
* 2.子类和父类的方法必须是实例方法,如果父类是static方法而子类是实例方法,或者相反都会报错。
* 如果父类和子类都是static方法,那么子类隐藏父类的方法,而不是重写父类方法。
* 3.子类和父类的方法必须要具有相同的函数名称、参数列表,并且子类的返回值与父类相同或者是父类返回类型的子类型(jdk1.5之后)。
* 如果方法名称相同而参数列表不同(返回类型可以相同也可以不同),那么只是方法的重载,而非重写。
* 如果方法名称和参数列表相同,返回值类型不同,子类返回值类型也不是父类返回值类型的子类,编译器就会报错。
* 4.子类方法的访问权限不能小于父类方法的访问权限(可以具有相同的访问权限或者子类的访问权限大于父类)
* 访问权限由高到低:public、protected、包访问权限、private。如果子类方法的访问权限低于父类,则编译器会给出错误信息
* 5.子类方法不能比父类方法抛出更多的编译时异常(不是运行时异常),即子类方法抛出的编译时异常或者和父类相同或者是父类异常的子类。
* @author tong
public class Inheritance {
* @param args
public static void main(String[] args) {
// TODO Auto-generated method stub
class Pareant {
public void doSomething() {
public static void doSomething1() {
public JComponent doSomething2() {
public JComponent doSomething3() {
public void doSomething4(int x) {
public void doSomething5() throws FileNotFoundException{
private void doSomething6(int x) {
class Sub extends Pareant {
//父类中该方法是私有的,对子类不可见,所以子类无法继承和覆盖父类的私有方法
//在这里并没有覆盖父类的私有方法,而是在子类中创建了一个新的和父类同名的方法而已,这两个方法没有任何关系
private void doSomething6(int x) {
// 报错,父类为实例方法,子类为静态方法
//This static method cannot hide the instance method from Pareant
public static void doSomething() {
// 报错,父类为静态方法,子类为实例方法
//This static method cannot hide the instance method from Pareant
public void doSomething1() {
// 正确,父类的返回值为JComponent,是子类返回值类的父类,从jdk1.5开始,重写父类方法时的返回值可以与父类相同,也可以是父类的子类
public JButton doSomething2() {
// 报错,父类的返回值为JComponent,子类返回值类型为int,子类返回值与父类返回值类型不同,也不是父类返回值的子类
//The return type is incompatible with Pareant.doSomething3()
public int doSomething3() {
//报错,父类的访问权限为public,子类为protected,子类的访问权限不能低于父类,可以高于或者等于父类的访问权限
//Cannot reduce the visibility of the inherited method from Pareant
protected void doSomething4(int x) {
//报错,子类不能抛出比父类更多的异常,父类抛出FileNotFoundException异常,子类抛出的IOException是父类异常的父类
//子类只能抛出和父类一样的异常,或者是父类异常的子类,而不能超过父类
//Exception IOException is not compatible with throws clause in Pareant.doSomething5()
public void doSomething5() throws IOException{
Error:(84, 17) java: 方法不会覆盖或实现超类型的方法
[104,9]方法不会覆盖或实现超类型的方法 maven工程
super语句,和方法覆盖
JAVA中子类是否可以可以继承、重写父类的静态方法--总结
Java中关于子类覆盖父类的抛出异常问题
ReactNative使用支付宝支付报错:方法不会覆盖或实现超类型的方法react-native-yunpeng-alipay
子类覆盖父类的成员变量
方法覆盖和方法重载必须满足的条件
react native项目编译的收报错:方法不会覆盖或实现超类型的方法
没有更多推荐了,Java中抽象类和抽象方法的区别 | SingleXJava中一个类要怎么实现两个接口中相同的方法名
[问题点数:30分,结帖人superjava000]
本版专家分:0
结帖率 93.75%
CSDN今日推荐
本版专家分:32939
2008年9月 Java大版内专家分月排行榜第二2008年8月 Java大版内专家分月排行榜第二
2008年10月 Java大版内专家分月排行榜第三
本版专家分:9766
本版专家分:8601
本版专家分:557
本版专家分:14644
本版专家分:0
本版专家分:2881
2009年10月 Java大版内专家分月排行榜第三
本版专家分:1824
本版专家分:0
本版专家分:3531
2010年6月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第三
本版专家分:366
2009年11月 Web 开发大版内专家分月排行榜第一
2009年12月 Web 开发大版内专家分月排行榜第二
2009年10月 Web 开发大版内专家分月排行榜第三
本版专家分:32939
2008年9月 Java大版内专家分月排行榜第二2008年8月 Java大版内专家分月排行榜第二
2008年10月 Java大版内专家分月排行榜第三
本版专家分:366
2009年11月 Web 开发大版内专家分月排行榜第一
2009年12月 Web 开发大版内专家分月排行榜第二
2009年10月 Web 开发大版内专家分月排行榜第三
本版专家分:125
本版专家分:780
本版专家分:25939
2006年2月 C/C++大版内专家分月排行榜第二
本版专家分:5436
本版专家分:1349
本版专家分:0
本版专家分:0
本版专家分:32939
2008年9月 Java大版内专家分月排行榜第二2008年8月 Java大版内专家分月排行榜第二
2008年10月 Java大版内专家分月排行榜第三
本版专家分:34299
本版专家分:1490
本版专家分:32
本版专家分:48
本版专家分:1836
本版专家分:56
本版专家分:25939
2006年2月 C/C++大版内专家分月排行榜第二
本版专家分:104
本版专家分:16
本版专家分:2
匿名用户不能发表回复!
其他相关推荐
概括性声明:你后面括号里具体写哪几个参数,就调用哪个方法。
可以存在同名的方法,但是参数类型和参数不能相同,这样的关系体现了Java中的多态(重载),举例如下:
package com.
* Overloading(重载,过载)
* 方法名相同,参数类型不同或者参数类型顺序不同
* 返回值,访问修饰符,异常可以不一样
* @author fatkun
前言:原程序是我在的《Java语言程序设计》里的一个例题,例4.13。也许对JAVA熟手来说这根本就是习之以常的事,但对于初学者的我却想了许久才弄明白这个问题。原程序如下:interface Interf{  void display();}public class E implements Interf{  void display(){  System.out.println(&d
定义一个接口,并定义相应的类来实现实现接口中的方法
public interface Circle {//定义接口
double PI = 3.1415;// 定义常量
void setRadius(double radius);// 定义抽象方法
double area();// 定义抽象方法
}package in...
// 面试题:一个方法和类名相同,那这个是构造方法吗?
// 答:不是,构造方法没有void,构造方法是方法名和类名相同且没有void。
// 给成员变量赋值有2种方式setXxx()和构造方法,但是一般用set赋值,针对性强一些
// 获取成员变量的值的方法也有2中,通过getXxx()和写一个show()方法,但一般用getXXX()
package mai
定义一个类时,常常需要定义一些方法描述类的行为特征,这些方法的实现方式是无法确定的。Java允许在定义方法时不写方法体,不包含方法体的方法为抽象方法,抽象方法用abstract修饰
格式:abstract void shout( );
//定义抽象方法shout//定义抽象类animal
abstract class animal
//定义抽象方法shout()
多多学习天天向上
(本人总结,可能现在有记错的地方,欢迎斧正):
(1)方法为静态方法,接口不能有静态方法,所以只能接口为非静态方法,而父类为静态方法,此时该类会编译报错,提示为静态方法与接口的抽象方法冲突。
(2)父类和接口的方法均为非静态方法时,该类可以定义同名的方法,但是算是重写父类方法而不是实现接口的方法(原因也许是根据就近原则,父类关系较近)。
此时,如果调用该对象的该同名方法,则最终结果为调用最后
一个类若只实现了接口的部分方法,那这个类就一定是一个抽象类.
反过来说,抽象类可以实现接口的部分方法或者一个方法也不实现.
public interface Human {
public void getColor();
public void talk();
public void getSex();
public abstract class Abstrac
(1)接口定义前默认修饰符为public。
(2)接口中变量默认修饰符为public static final。
(3)接口中方法默认的访问权限为public。
public interface Runer {//接口定义,接口里只包含常量和抽象方法
String texing = &动时必产生振动&;//常量默认为public static finaljava中,一个类实现某个接口,必须重写接口中的所有方法吗?...
java中,一个类实现某个接口,必须重写接口中的所有方法吗?
http://www.cnblogs.com/jianmang/articles/4943653.html
不一定,关键要看子类是否是抽象类。如果子类是非抽象类,则必须实现接口中的所有方法; 如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在!1、抽象类定义抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。抽象类是
不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。2、抽象类特点1)抽象类不能实例化。2)抽象类可以包含抽象方法和抽象访问器。3)不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承。4)从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实际实现。3、与具体类的比较1)抽象类不能直接实例化,并且对抽象类使用 new 运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。2)允许(但不要求)抽象类包含抽象成员。3)抽象类不能被密封。4、与接口的比较1)相同点a、不能实例化;b、包含未实现的方法声明;c、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)2)不同点a、类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。b、抽象类当中可以存在非抽象的方法,可接口不能,且它里面的方法只是一个声明必须用public来修饰没有具体实现的方法。c、抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static final)。d、抽象类是对象的抽象,然而接口是一种行为规范。
Java中 一个类实现了某接口 则必须实现该接口中的所有方法么?
接口类的实现与重写
java中,一个类实现某个接口,必须重写接口中的所有方法吗???
继承类要实现接口父类的所有方法吗
抽象类可以只实现接口的一部分方法
抽象类、接口的区别 和 抽象类可以不实现接口的全部方法
接口为什么一定要实现其所有方法
Java中,一个类实现某个接口,必须重写接口中的所有方法吗
java中接口的方法为什么必须是public
在java类中实现不同接口的同名方法时,该方法属于哪个接口?
没有更多推荐了,职友集:一家做公司点评的网站

我要回帖

更多关于 Java多态的实现方法 的文章

 

随机推荐