zoukankan      html  css  js  c++  java
  • 接口与继承:方法覆盖(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关键字。

  • 相关阅读:
    【2018.10.3】万圣节的快递
    【2018.10.3】万圣节的入场券
    【2018.10.2】纸条
    【2018.10.2】菌落合并
    【2018.10.2】Note of CXM
    【2018.10.1】【JSOI2016】最佳团体(bzoj4753)
    【2018.10.1】「JOI 2014 Final」年轮蛋糕
    【2018.9.26】K-D Tree详解
    Python中的numpy模块解析
    Python中xlrd模块解析
  • 原文地址:https://www.cnblogs.com/weipinggong/p/4941911.html
Copyright © 2011-2022 走看看