A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾翰翰 中级黑马   /  2012-11-7 17:46  /  1899 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Father {
//不带参数的构造器
public Father(){
  System.out.println("父类中的构造器");
}
//带参数的构造器
public Father(String s){
  System.out.println(s + "父类中的构造器");
}
}
public class Child extends Father{
public Child(){
  System.out.println("子类中的构造器");
}
public  Child(String s ){
  System.out.println("子类中的构造器");
}
}

public class Sample05 {
public static void main(String args[]){
  Child c = new Child("哈哈");
  c.getClass();
}
}
为什么红字为孩子c.后面出不来show()。


评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 很给力!

查看全部评分

5 个回复

正序浏览
我的理解方式不知到对不对,所以也发出来让大家帮我看看。

class Father
{
        public Father()
        {
                  System.out.println("父类中的构造器");
        }
     public Father(String s)
        {
                 System.out.println(s + "父类中的构造器");
        }
}

class Child extends Father
{
        public Child()
        {
                 System.out.println("子类中的构造器");
         }
        public  Child(String s )
        {
                 this.s = s;
                System.out.println(s+"子类中的构造器");
        }
         public  String getClass ()
        {
                  return Child();
         }

        public  String getClass (String s )
        {
                  return Child(String s );
         }
}

class Sample05
{
        public static void main(String args[])
        {
                 Child c = new Child("哈哈");
                 c.getClass();
        }
}
回复 使用道具 举报
//分析下楼主的代码

package com.itheima;
class Father {//1,去掉父类前的public 修饰
  //不带参数的构造器
public Father(){
    System.out.println("父类中的构造器");
  }
  //带参数的构造器
public Father(String s){
    System.out.println(s + "父类中的构造器");
  }
  }
class Child extends Father{//1,去掉子类前的public 修饰
  public Child(){
    System.out.println("子类中的构造器");
  }
public  Child(String s ){
  //子类中每个构造函数如果不显示的写带参父类构造函数就都默认调用父类不带参数的构造函数super();
    System.out.println(s+"子类中的构造器");//这是带参子类构造函数
  }
  }
  
public class Sample05 {
  public static void main(String args[]){
    Child c = new Child("哈哈");//创建子类对象,会先调用父类不带参构造函数,接着调用子类带参数构造函数
    System.out.println(c.getClass());//楼主原语句只是返回子类类名信息 ,没将其打印所以看不到结果
  }
}

/*
打印结果为:
父类中的构造器
哈哈子类中的构造器
class com.itheima.Child
*/

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
不知道楼主是不是说执行c.getClass();这句后没有执行System.out.println("子类中的构造器");这句?
也就是说执行了c.getClass();并没有new一个子类对象,这是正确的。
因为c.getClass()只是得到此类的Class字节码对象,它此时并没有实例化的Class字节码对象对应的类的对象
所以还需c.getClass().newInstance()。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
c.getClass()返回的是Class对象。不知道LZ想干嘛? 问题不清呢
回复 使用道具 举报
子类,父类都没有show方法。怎么能调用show方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马