2 bazingaea Bazingaea 于 2016.03.13 14:43 提问

java中为什么会自动执行子类重写父类的方法?

问题:

1.在main方法中我没有调用paint方法,为什么它会自动被调用?
2.老师说这是多态,可是多态不是需要三个条件实现么?继承,重写方法,父类引用指向子类对象,这里没有第三点啊

代码如下:

public class GameFrame extends Frame{

public void launchFrame(){
setSize(500,500);
setLocation(100,100);
setVisible(true);
}

@Override
public void paint(Graphics g) {
g.drawLine(100,100,200,200);
g.fillRect(100, 100, 20, 20);
}

public static void main(String[] args) {
GameFrame gf=new GameFrame();
gf.launchFrame();
}

}

2个回答

kobe241314886
kobe241314886   2016.03.13 14:55

有的方法和接口就是这样设计的,重载,也是多态的一种,这样有更好的封装

Bazingaea
Bazingaea 重载不是同名不同参数么,哪来的重载啊
2 年多之前 回复
Bazingaea
Bazingaea 这里没有重载,只是重写
2 年多之前 回复
bdmh
bdmh   Ds   Rxr 2016.03.13 15:01

这就是多态,父类中会执行paint,他会执行到具体的实现类里

Bazingaea
Bazingaea 可是main函数里也没有定义父类引用指向子类对象啊,父类怎么执行paint,通过什么执行?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
创建子类对象时,父类构造函数中调用被子类重写的方法为什么调用的是子类的方法,而被子类重载的方法不会调用?
问题:创建子类对象时,父类构造函数中调用被子类重写的方法为什么调用的是子类的方法,而被子类重载的方法不会调用? public class Basic{ public void add(int i) { System.out.println("Basic add"); } public Basic() { add('a');
Java父类调用被子类重写的方法
父类: public class Father { public void doing(){ talking(); } public void talking(){ System.out.println("father is talking!"); } } 子类: public class Son extends F...
为什么子类在重写父类的方法后,会替代原有方法?
个人理解,如有误解请留言. OC 是动态的语言,方法的调用从编译期延缓到了运行期, 所有方法的调用都是通过 objc_msgSend 进行消息的派发, objc_msgSend方法的调用。     objc_msgSend方法含两个必要参数:receiver、方法名(即:selector),如:     [receiver message]; 将被转换为:objc_ms
子类继承父类,重写父类方法,运用多态时调用重写的方法时调用子类的还是调用父类的?
package 第五天; public class Person { public void say() { System.out.println("我是Person的say方法"); } } 子类Student如下: package 第五天; public class Student extends Person{ //重写了父类的say()方法 @Override
详细讲解方法重写的注意事项,子类与父类代码的执行顺序
打印“abc” public class Test { private static Test test = new Test(); public static int count1; public static int count2 = 0; private Test() { count1++; count2++; } public static
关于子类重写父类方法override
 子类重写父类的方法时声明抛出异常不能比父类范围大 在java 中,当我们子类要重写父类中的方法,如果父类的方法有异常声明,那么子类重写这个方法时候,所要声明的异常不应该比父类的大。只能是小等,或者可以没有。原因如下。 假如我们自定意义一个异常: public class MyException extends Exception { public
java父类调用被子类重写的方法
1.如果父类构造器调用了被子类重写的方法,且通过子类构造函数创建子类对象,调用了这个父类构造器(无论显示还是隐式),就会导致父类在构造时实际上调用的是子类覆盖的方法(你需要了解java继承中的初始化机制)。 例子: public abstract class Father { public Father() { display(); } public void di
java类的加载顺序,父类和子类初始化的顺序和重写所遇到的上塑造型
类的加载顺序 什么时候类加载 第一次需要使用类信息时加载。 类加载的原则:延迟加载,能不加载就不加载。 触发类加载的几种情况: (1)、调用静态成员时,会加载静态成员真正所在的类及其父类。 通过子类调用父类的静态成员时,只会加载父类而不会加载子类。 (2)、第一次 new 对象的时候 加载(第二次再 new 同一个类时,不需再加载)。 (3)、加载子类会先加载父类。(覆盖父类方法时
java 向上转型之后调用子类的同名变量/方法的问题(多态)
直接引用百度知道上面的一个问题吧,问得很详细,答得很明确,我自己就不总结了。 java中向上转型时变量类型由声明时决定还是由new决定   2011-6-29 18:26 提问者: 月下潜读 | 浏览次数:154次 比如 class Father{ String name="父"; void
在父类构造器中使用子类中被重写的方法
请看代码 package 憨八龟; //好像懂了               JAVA有一种无歧义性              注重安全性        尽量无歧义               处理的很好了 public class hbg { public static void main(String[] args) { hbg0 H=new hbg0();   hbg1 g=n