- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在四处寻找,尽管出于某种原因我找到了一些答案,但我似乎无法理解这个概念,这显然会导致我的代码出现问题。
我有这个:
public static Contact createContact() {
Contact contact = null;
if (ContactUI.getRdb_acquaintance().isSelected()) {
contact = new Acquaintance();
} else if (ContactUI.getRdb_friend().isSelected()) {
contact = new Friend();
//contact.setStr_telMobile(ContactUI.getTxt_telMobile().getText());
} else {
contact = new Family();
//contact.setStr_telMobile(ContactUI.getTxt_telMobile().getText());
//contact.setStr_BDay(ContactUI.getTxt_BDay().getText());
}
setCommonDetails(contact);
return contact;
}
一旦我将联系人初始化为其子类之一,我希望能够调用子类特定方法 .setStr_telMobile
和 .setStr_BDay
,但我得到一个错误,我无法访问这些方法。我已经在我的代码中注释了这些行。
例如,我认为我应该能够将 Contact 类型的对象初始化为 Friend(Contact 的子类),并访问该子类的专用方法和属性。
最佳答案
无论其运行时类型如何,contact
都是Contact
类型的引用。因此,编译器将只允许您使用 Contact
的方法。
解决这个问题的优雅方法可能是使用临时的 Friend
引用来初始化您需要的所有成员,然后才将其分配给 Contact
:
// Snipped
} else if (ContactUI.getRdb_friend().isSelected()) {
Friend temp = new Friend();
temp.setStr_telMobile(ContactUI.getTxt_telMobile().getText());
contact = temp;
}
// snipped
或者,因为您知道您已经为 contact
分配了一个 Friend
实例,您可以明确地将它向下转型为一个 Friend
以访问它的方法:
// Snipped
} else if (ContactUI.getRdb_friend().isSelected()) {
contact = new Friend();
((Friend) contact).setStr_telMobile(ContactUI.getTxt_telMobile().getText());
}
// snipped
关于java - 多态性,问题在我的程序上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32209682/
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
所以我正在开发一个黑 jack 程序,但我有点卡住了。我会警告大家,我对编程真的很陌生,而且,我正在项目中期......所以有一些松散的结局和未使用的变量,以及一些不必要的逻辑(用于测试),但这就是我
我正在尝试创建一个可用作 OpenGL 测试工具的示例程序。到目前为止,我的那个似乎可以工作,但似乎忽略了通过统一变量 MVPMatrix 传递的 MVP 矩阵。当我添加代码以读回制服并检查它是否确实
感谢您帮助我,这是有关我的代码的部分。 printf("Thank you, now please enter the logic gate"); scanf("%s", &C); if (C ==
public static void ejemplosString(String palabra){ char[] letras = palabra.toCharArray();
所以,我有一个 php 应用程序,通过 cgi 和 nginx 运行。我有一个 .jar 程序,用于在条形码打印机(Zebra)上打印条形码,猜猜看是什么!。 我的 php 应用程序使用 exec()
我遇到的唯一问题是 getAll() 方法,它似乎在 PersonnelController 类中的位置立即运行。我也曾在其他很多地方尝试过,但都没有成功。 setAll() 方法看起来不错,我已经测
我是一名优秀的程序员,十分优秀!