接口与继承:方法覆盖(super)

源代码

//父类Parent
class Parent{
    int x;
    int y;
    Parent()
    {
        x = 0;
        y = 0;
    }
    public void Set(int a,int b)
    {
        x = a;
        y = b;
    }
}
//子类Child继承了Parent
class Child extends Parent{
    int z;
    Child()
    {
        super();//使用父类的构造方法初始化
        z = 0;
    }
    public void Set(int a,int b)//与父类相同的方法
    {
        x = a;
        y = b;
        z = a + b;
    }
    public void Show()
    {
        System.out.println("初始值");
        System.out.println("x = "+ x +"  y = " + y + "  z = " + z);
        System.out.println("调用父类的Set方法Set(1,2)");
        super.Set(1,2);
        System.out.println("x = "+ x +"  y = " + y + "  z = " + z);

        System.out.println("调用子类的Set方法Set(1,2)");
        Set(1,2);
        System.out.println("x = "+ x +"  y = " + y + "  z = " + z);
    }

}

public class Test {
    public static void main(String args[])
    {
        Child c = new Child();
        c.Show();
    }

}

结果截图

Java“方法覆盖”的语法规则

(1)覆盖方法的允许访问范围不能小于原方法。

(2)覆盖方法所抛出的异常不能比原方法更多。

(3)声明为final方法不允许覆盖。 例如,Object的getClass()方法不能覆盖。

(4)不能覆盖静态方法

“方法覆盖(override)”的要点:

  (1)方法覆盖要求子类与父类的方法一模一样,否则就是方法重载(overload)!

  (2)在子类中,若要调用父类中被覆盖的方法,可以使用super关键字。

时间: 2024-12-12 09:46:43

接口与继承:方法覆盖(super)的相关文章

接口与继承——方法覆盖

//父类Parentclass Parent{ int x; int y; Parent() { x = 0; y = 0; } public void Set(int a,int b) { x = a; y = b; }}//子类Child继承了Parentclass Child extends Parent{ int z; Child() { super();//使用父类的构造方法初始化 z = 0; } public void Set(int a,int b)//与父类相同的方法 { x

C#接口多继承方法重名问题

最近实现一个功能需要继承两个接口,然而父类接口有这重名的方法,且方法实现一致.两个父接口均被多个子接口继承,并在类实例中实现.起初,我是通过new重名方法来实现我的功能调用.后被指正,在网上看了一个工友解决类似问题的方法,这里引用记录一下. 引自:http://www.cnblogs.com/xgw2004058/archive/2010/06/18/1760046.html 经常,一个类会实现多个接口,比如用户的一个控件继承自"IEdit"和"ICombo",每个

继承--方法覆盖--多态

继承extends java只支持单继承,但是可以间接继承别的类,默认继承Object 继承的作用:代码重用,重要的作用是:方法的覆盖override和多态机制. 多态的前提是继承 向上转型:等号右边是子类 左边是父类 向下转型:等号右边是父类 左边是子类 向上转型:父类引用指向了(等号左边)子类的内存地址 向下转型:强制类型转换所以需要加强制类型转换符 向下转型存在ClassCastException类转换异常,所以需要加instanceof 判断一下类型: Animal a3=new Bir

Java方法继承、方法重载、方法覆盖小总结

转自:http://blog.csdn.net/cdsnmdl/article/details/3968688 ———————————————————————————————————— 1.方法继承:利用extends关键字一个方法继承另一个方法,而且只能直接继承一个类. 当Sub类和Base类在同一个包时Sub类继承Base类中的public/protected/默认级别的变量个方法 在不同包时继承public/protected级别的变量和方法. 2.方法重载:如果有两个方法的方法名相同,但

实习第一周第一天:接口 extends是继承类,implement是实现接口,原接口里面的方法填充,方法名也是不变,重写override是父类的方法名不变,把方法体给改了

一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 接口定义的一般形式为: [访问控制符]interface <接口名> { 类型标识符final 符号常量名n = 常数: 返回值类型  方法名([参数列表]); - } 二.接口的特点 1.Java接口中的成员变量默认都是public,static,final类型的(都可省略),必须被显

java面向对象编程(六)--四大特征之继承、方法重载和方法覆盖

一.继承 1.继承的概念 继承可以解决代码复用,让我们的编程更加靠近人类思维.当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extends语句来声明继承父类.语法如下: class 子类 extends 父类 这样,子类就会自动拥有父类定义的某些属性和方法.另外,并不是父类的所有属性.方法都可以被子类继承.父类的public修饰符的属性和方法,protected修饰符的属性和方法,默认修饰符属

201671010145 2016-2017 《Java程序设计》java的继承中什么叫方法覆盖,是如何实现的?

方法覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用.最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而在实现时,就需要实现接口声明的所有方法.除了这个典型的用法以外,在继承中也可能会在子类覆盖父类中的方法.在覆盖要注意以下的几点:1.覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果:2.覆盖的方法的返回值必须和被覆盖的方法的返回一致:3.覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类:4.被覆盖的方法不

java子接口方法覆盖父接口方法的思考

接口List中继承接口Collection,接口Collection中存在size()方法,在接口List中又覆盖size()方法,意义何在?(覆盖了很多方法,见下图) public interface List<E> extends Collection<E> 1.父接口和子接口都是抽象方法(未实现),子类没有改变父类的该方法,在功能层面的确是没有意义的. 2. 子类方法不能缩小所覆盖方法的访问权限和,但是接口里面的方法只能是public,所以子接口方法覆盖父接口方法不能改变方法

ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十七课(类变量、方法、继承、覆盖)

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰  开局一张图 Python人工智能从入门到精通 补充: 实例方法都是操作实例对象的 属于此类对象的方法 实例变量 添加/修改属性: 对象.属性名 = 表达式 删除: del 对象.属性名 类 |          对象 | 实例 class  object     instance 类的本质上也是对象 类可以创建此类对象 ---------------------------------------------