永发信息网

【JAVA】帮忙分析个程序

答案:6  悬赏:70  手机版
解决时间 2021-05-19 00:12
class ExSuper{
   String name;
   String nick_name;
   public ExSuper(String s,String t){
    name = s;
    nick_name = t;
   }
    public String toString(){
     return name;
    }
   }
   public class Example extends ExSuper{
    public Example(String s,String t){
    super(s,t);
    }
    public String toString(){
     return name +"a.k.a"+nick_name;
    }
    public static void main(String args[]){
     ExSuper a = new ExSuper("First","1st");
     ExSuper b = new Example("Second","2nd");
     System.out.println("a is"+a.toString());
     System.out.println("b is"+b.toString());
    }
  }
说细点,谢谢。
最佳答案

首先执行输出的结果应该如下


a is First


b is Seconda.k.a2nd


这个结果是这样来的


ExSuper这个类有两个属性name和nick_name


ExSuper的构造方法完成将参数s赋给name,t赋给nick_name


ExSuper还有一个toString方法,返回name


另外Example这个类继承了ExSuper,其构造方法实现直接使用父类的构造实现super(s,t); 及对name和nick_name赋值


同时Example类重写了toString方法,返回name +"a.k.a"+nick_name


因此,main里面对象a以ExSuper实例化,输出时toString就用ExSuper的toString实现输出,及name的值First


对象b以Example实例化,输出时toString因为在Example里重写了,因此就以name +"a.k.a"+nick_name返回,即Seconda.k.a2nd


全部回答

子类Example 继承了父类ExSuper 在子类的构造方法中 有super关键字 是调用父类的构造方法 而且必须得调用 还得放在最前面 用于初始化父类中的变量 如果不写super 默认会掉 父类中无参构造方法 但是这里找不到 所以会报错 在构造方法中还可以用this关键字 表示调用该类中的其他构造方法

class ExSuper{    String name;    String nick_name;    public ExSuper(String s,String t)//构造方法 为变量赋值{     name = s;     nick_name = t;    }     public String toString(){      return name;     }    }    public class Example extends ExSuper// 继承类{     public Example(String s,String t)//构造方法{     super(s,t);     }     public String toString()// 子类重写了一个父类的方法{      return name +"a.k.a"+nick_name;     }     public static void main(String args[]){      ExSuper a = new ExSuper("First","1st");//创建对象      ExSuper b = new Example("Second","2nd");//创建对象      System.out.println("a is"+a.toString());//输出 调用父类里面的方法      System.out.println("b is"+b.toString());//输出 调用子类里面的方法 子类继承了父类 把方法重写了之后 就会把父类的方法隐藏     }   }

这里讲的是 JAVA的多态~

比如说用父类的遥控器来控制子类里面的 方法~

首先一目了然,Example继承了ExSuper

ExSuper a = new ExSuper("First","1st"); ExSuper 这个里面复写的toString()返回的是name;方法构造函数是:

 public ExSuper(String s,String t){  name = s;nick_name = t; } 输出a is +a.toString()是 a is First

 ExSuper b = new Example("Second","2nd");和ExSuper传参一样...但toString()返回的是 name+"a.k.a"+nick_name; 即输出的"b is"+b.toString()为:Seconda.ka2nd!

重载了父类的一个构造方法 但是其实结果一样

重写了父类的一个方法 所以后面的输出值不同了

结果

a is First b is Seconda.k.a2nd

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎样才可以忘了一个刻骨铭心的人和那些与他有
老母吃黄连
我知道相声台词,相声小品大全剧本 简单一点的
cf会员可以踢人多少次
dota怎么玩,
耒阳市衡阳重庆酸辣粉(德泰隆大道)怎么去啊,
《老人与海》精彩语段
梦幻50级怎么挣钱
姓张的男孩5月21日出生的男孩
项城市周口麦乐迪(交通西路)地址在哪,我要去
This is my book.(同义句) I am ____ ____
甘家口到中国科技馆坐公交怎么去?
求爵士舞基本入门视频
邀请开通QQ农场
《济南的冬天》急急急!!
推荐资讯
有什么游戏可以自动打怪挂机的?
夕阳西下,断肠人在天涯,这首词的全部内容是
从长沙到湛江有直达火车吗?
qq 充值多长时间到帐
华龙区濮阳五星集羊肉汤烩面馆地址是什么,有
为什么男人都爱变心?
爱民区牡丹江师范学院-生命科学与技术学院地
爱真的是好事吗?
为什么我的黄钻没充它自己点了?
深圳那边主要用哪些数控车床
QQ日志在里订阅里看不了里面的图片
怎么把酷狗音乐下载到手机去?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?