java-JAVA 方法覆盖问题

问题描述

JAVA 方法覆盖问题

下面代码中 1:Auto auto = new Car()为什么这么写 ;
2:auto.fun(); 输出的值为什么是a poor engine

父类的engine方法不是已经被子类重写了吗?是super的作用?

public class Auto {

public void engine() {
    System.out.println("a poor engine");
}
public void fun() {
    System.out.println("Driving fun");
}

}

public class Car extends Auto {
public String name = "a nice car";

public void engine() {
    System.out.println("a nice engine");
}
public void fun() {
    super.engine();
}
public static void main(String[] args) {
    Auto auto = new Car();
    auto.fun();
    auto.engine();
}

}

解决方案

1、Auto auto = new Car(); 你也可以Car auto = new Car(), car是子类,类型用父类也没什么问题。
2、子类中多加一句print就知道会先调用子类的,因为子类用用super指明了调用父类的engine,所以会调用父类的engine,打印出a poor engine

 public void fun() {
   System.out.println("fun");
    super.engine();
}

解决方案二:

是super的作用,java中this指当前对象,super是调用父对象,当子类覆盖父类的方法时,使用super可以掉用父类方法。

时间: 2024-08-23 15:05:41

java-JAVA 方法覆盖问题的相关文章

浅谈java的方法覆盖与变量覆盖

首先,我们看看关于重载,和覆盖(重写)的简明定义: 方法重载:如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载. 方法覆盖:如果在子类中定义一个方法,其名称.返回类型及参数签名正好与父类中某个方法的名称.返回类型及参数签名相匹配,那么可以说,子类的方法覆盖了父类的方法 我们重点说说覆盖问题,以如下代码为例: [java] view plain copy  print? public class People {       public String getName

区分Java的方法覆盖与变量覆盖_java

首先,我们看看关于重载,和覆盖(重写)的简明定义: 方法重载:如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载. 方法覆盖:如果在子类中定义一个方法,其名称.返回类型及参数签名正好与父类中某个方法的名称.返回类型及参数签名相匹配,那么可以说,子类的方法覆盖了父类的方法 我们重点说说覆盖问题,以如下代码为例: public class People { public String getName() { return "people"; } } public

Java语言入门教程(十四):Java语言中方法重载与方法覆盖

很多时候,某个Java类中有多个类似的方法.如Math类中,计算绝对值的方 法就会有多个,因为对不同数据类型的数计算方式不同.比如对float,int, long,double各类型的计算方式各不相同,那么Math类中就应该设计4个求绝对 值的方法,分别对每种类型进行计算.在这种情况下,最好的方式就是设计4个 同名,但是不同参的方法,如下所示(请参见API帮助文档): abs(double a) Returns the absolute value of a double value. abs(

重写-JAVA中子类覆盖了父类的方法,是否还有办法通过子类调用父类同一方法?

问题描述 JAVA中子类覆盖了父类的方法,是否还有办法通过子类调用父类同一方法? JAVA中子类覆盖了父类的方法,是否还有办法通过子类调用父类同一方法? 解决方案 使用super.methodName();调用. Java中super关键字指代的是父类. this关键字指代的是自身. 解决方案二: 用super.方法名调用 解决方案三: 试试super.xxx 解决方案四: 直接用super.方法名调用对应的方法

继承 覆盖 多态-java私有方法可以继承吗

问题描述 java私有方法可以继承吗 私有的成员和方法可以在子类中被继承吗,如果不能为什么不能,求解详细点 解决方案 java继承中的"缺陷":"覆盖"私有方法java继承中的"缺陷":"覆盖"私有方法Java 继承与初始化."覆盖"私有方法 解决方案二: 首先说私有的成员和方法不能被子类继承,这是java语法规范强制规定,也是面向对象设计的原则. 其次,脱离具体的语言,从面向对象角度来看,用private

java中关于继承层次中的方法覆盖!!谢谢

问题描述 importjava.io.*;publicclassJava6extendsBge{floatheight;Java6(Stringnam,inta,chars,floathei){super(nam,a,s);height=hei;}voiddisplay(){System.out.println("name:"+name+"age:"+age+"sex:"+sex+"height:"+height);}publ

java内部类可以覆盖吗

若创建一个内部类,然后从封装类继承,并重新定义内部类,那么会出现什么情况呢?也就是说,我们有可能覆盖一个内部类吗?这看起来似乎是一个非常有用的概念,但"覆盖"一个内部类--好象它是外部类的另一个方法--这一概念实际不能做任何事情:   //: BigEgg.java // An inner class cannot be overriden // like a method class Egg { protected class Yolk { public Yolk() { Syste

java重载与覆盖,新人求教

问题描述 java重载与覆盖,新人求教 如题Java重载与覆盖 麻烦大神给讲解一下,网上也查了资料但是还不是理解的特别透彻. 解决方案 重载是方法名一样,参数列表不同: 覆盖(重写),子类重写父类的方法,一般有Override关键字修饰: 看下这个多实践就应该能理解了.http://blog.csdn.net/fsz521/article/details/8739236 解决方案二: 方法重载:在一个类里面,相同功能乃至不同功能(必须是形式参数类型不同)的方法用同一个方法名来写的手段,例如 cl

几种任务调度的 Java 实现方法与比较

综 观目前的 Web 应用,多数应用都具备任务调度的功能.本文由浅入深介绍了几种任务调度的 Java 实现方法,包括 Timer,Scheduler, Quartz 以及 JCron Tab,并对其优缺点进行比较,目的在于给需要开发任务调度的程序员提供有价值的参考.   任务调度是指基于给定时间点,给定时间间隔或者给定执行次数自动执行任务.本文由浅入深介绍四种任务调度的 Java 实现: Timer ScheduledExecutor 开源工具包 Quartz 开源工具包 JCronTab 此外

对于java equals方法的疑惑。

问题描述 对于java equals方法的疑惑. String s1 = new String("123"); String s2 = new String("123"); System.out.println(s1.equals(s2)); Test t1=new Test("123"); Test t2=new Test("123"); System.out.println(t1.equals(t2)); 为何上面输出的是