2 xiaoshengfdyh xiaoshengfdyh 于 2016.05.06 10:26 提问

子类调用父类方法的问题

父类:

 package com.example.main;

public class Parent {

    public void print(){
        System.out.println(this);
    }

}

子类:

 package com.example.main;


public class Childer extends Parent {

    public static void main(String[] args) {
        new Childer().print();
    }

    @Override
    public void print() {
        super.print();
    };

}

当执行main方法,控制台打印出来的是Child对象的地址:com.example.main.Childer@d3db51

为什么打印的是子类对象的地址,在父类方法中打印this对象不应该打印的是父类对象的吗??

5个回答

CSDNXIAOS
CSDNXIAOS   2016.05.06 10:32

答案就在这里:子类调用父类方法
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

bdmh
bdmh   Ds   Rxr 2016.05.06 10:41

虽然你调用的是父类的方法,但是this指向的是child对象,这既是多态

xiaoshengfdyh
xiaoshengfdyh 这个是多态 请您仔细说说好吗
大约 2 年之前 回复
qq_34750152
qq_34750152   2016.05.06 12:01

这是因为你在子类中调用父类的方法,这时,这个this指的是子类,而不是父类,如果在父类中引用,那么this就是指当前类

ZGZ1002
ZGZ1002   2016.05.06 12:25

你这里的this指的是子类,而不是父类,如果在父类中引用,那么this就是指当前类,
可以参考:http://www.360doc.com/content/14/0609/15/10630456_385121221.shtml

mazegong
mazegong   2016.05.06 15:51

虽然你调用的是父类的方法,但是this指向的是child对象,这既是多态

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
关于C++中子类调用父类方法的一个问题
在写代码时遇到了以下类似情况:#include <iostream> #include <string>using namespace std;class A { public: void func1(string prefix) { cout << prefix << "A::func1" << endl; } void func2(string prefi
关于子类继承父类后调用方法的问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 class ParentClass {    public String msg = "I
c++继承父类的子类,如何调用父类的同名函数?
子类调用父类的同名函数: 子类和父类返回值参数相同,函数名相同,有virtual关键字,则由对象的类型决定调用哪个函数。 子类和父类只要函数名相同,没有virtual关键字,则子类的对象没有办法调用到父类的同名函数,父类的同名函数被隐藏了,也可以强制调用父类的同名函数class::funtion_name。 子类和父类参数不同,函数名相同,有virtual关键字,
关于子类和父类中的this的用法
在看毕向东java视频的时候,多态这一章讲到了一段代码: public class Demo { public static void main(String[] args) { Fu f = new Zi(); f.show(); } } class Fu { int num = 1; void show() { System.out.println(this.num)
Java 子类方法的父类方法相互调用
class A{ public void fun1(){ System.out.println("a:fun1"); this.fun2(); } /** * a:fun1 * a:fun2 */ private void fun2(){ System.out.println("a:fun2"
Java中父类和子类中的方法调用和参数传递探讨
有这样一段程序,看看它会输出什么结果public class Test { public static void main(String [] args){ System.out.println(new B().getValue()); } static class A{ protected int value;
创建子类对象时,父类构造函数中调用被子类重写的方法为什么调用的是子类的方法,而被子类重载的方法不会调用?
问题:创建子类对象时,父类构造函数中调用被子类重写的方法为什么调用的是子类的方法,而被子类重载的方法不会调用? public class Basic{ public void add(int i) { System.out.println("Basic add"); } public Basic() { add('a');
C++子类执行父类的方法
需要注意的是C++的语法, 子类若有形参/名字均与父类相同的方法实现, 那么此方法将会覆盖父类的方法, 也就是说当调用子类此方法时, 不会再执行父类的方法了, 而类的构造/析构又不一样, 是会继承执行的.  比如父类有void method1(), 子类也有void method1(), 那么当对象定义为子类时, 执行method1时只会执行子类的method1, 父类的method1不执行,
Java 中父类怎么调用子类的方法?
Java中父类可以调用子类方法吗?
JAVA基础 -从父类的引用如何调用子类中独有的方法
首先放上源文件 父类  Animal.java package com.imooc; public class Animal {     public void eat(){            //注意这个eat方法      System.out.println("动物具有吃的能力");     } } 子类  Dog.java package com.im