java 对象造型的意义 java
答案:3 悬赏:40 手机版
解决时间 2021-03-28 02:05
- 提问者网友:孤凫
- 2021-03-27 11:33
java 对象造型的意义 java
最佳答案
- 五星知识达人网友:往事埋风中
- 2021-03-27 12:40
模块与重用
以你的例子来说吧。你那例子是课本用来告诉我们怎么用父类引用子类对象的,所以根本没有意义,于是你自然会问“为什么不直接使用B b1=new B();?”这样的问题了。
要知道把子类的引用给父类有什么意义,这要在够大型的架构里面才能体现的。比如说Java的awt、swing等GUI的框架里面,你随处可以看到继承重用。
就好像说,一个按钮和一个文本框,这两个都是可以显示出来的图形组件;而你要把这两个组件添加到某某窗口frame。那么在这个窗口frame应该有一个方法是可以添加图形组件的,而这个方法必须带有一个参数,这个参数表示要添加的组件,如果让你来设计,你觉得这个参数的类型是什么?显然,这个参数的类型应该表示所有可以被绘制的图形组件(如果只表示按钮或文本框的话,那么以后你新设计了一个单选框,那不是要把frame的代码改动了)。实际上它的这个添加方法是这么被定义的:add(Component comp)。这里的Component是你要添加的按钮或文本框的顶级父类了。
以你的例子来说吧。你那例子是课本用来告诉我们怎么用父类引用子类对象的,所以根本没有意义,于是你自然会问“为什么不直接使用B b1=new B();?”这样的问题了。
要知道把子类的引用给父类有什么意义,这要在够大型的架构里面才能体现的。比如说Java的awt、swing等GUI的框架里面,你随处可以看到继承重用。
就好像说,一个按钮和一个文本框,这两个都是可以显示出来的图形组件;而你要把这两个组件添加到某某窗口frame。那么在这个窗口frame应该有一个方法是可以添加图形组件的,而这个方法必须带有一个参数,这个参数表示要添加的组件,如果让你来设计,你觉得这个参数的类型是什么?显然,这个参数的类型应该表示所有可以被绘制的图形组件(如果只表示按钮或文本框的话,那么以后你新设计了一个单选框,那不是要把frame的代码改动了)。实际上它的这个添加方法是这么被定义的:add(Component comp)。这里的Component是你要添加的按钮或文本框的顶级父类了。
全部回答
- 1楼网友:西风乍起
- 2021-03-27 14:14
这个问题涉及到多态,下面是多态的解释
class Animals {
jiaosheng() {
System.out.print("动物叫声");
}
}
class Cat extends Animals {
jiaosheng() {
System.out.print(" 猫叫声");
}
}
class Dog extends Animals {
jiaosheng() {
System.out.println("狗叫声");
}
}
public class Text { //定义一个测试类
void printJiaosheng(Animals a) {
a.jiaosheng();
}
public static void main(String args[]) {
Text t = new Text();
Animals c = new Cat();
Animals d = new Dog();
t.printJiaosheng(c);
t.printJiaosheng(d);
}
}
答案:猫叫声 狗叫声
根据这段代码理解一下多态
如果像你那样写的话,要在Text累打印每个动物的叫声,那么有几个动物就要写多少个printJiaosheng()的方法,而像这样,就只要写一个,就能打印每个动物的叫声
或许你现在看不出什么但当你编写大程序是就会发现这种写法的好处,这也是一种设计模式吧
class Animals {
jiaosheng() {
System.out.print("动物叫声");
}
}
class Cat extends Animals {
jiaosheng() {
System.out.print(" 猫叫声");
}
}
class Dog extends Animals {
jiaosheng() {
System.out.println("狗叫声");
}
}
public class Text { //定义一个测试类
void printJiaosheng(Animals a) {
a.jiaosheng();
}
public static void main(String args[]) {
Text t = new Text();
Animals c = new Cat();
Animals d = new Dog();
t.printJiaosheng(c);
t.printJiaosheng(d);
}
}
答案:猫叫声 狗叫声
根据这段代码理解一下多态
如果像你那样写的话,要在Text累打印每个动物的叫声,那么有几个动物就要写多少个printJiaosheng()的方法,而像这样,就只要写一个,就能打印每个动物的叫声
或许你现在看不出什么但当你编写大程序是就会发现这种写法的好处,这也是一种设计模式吧
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯