public class OverRiding {
public static void main(String[] args) {
// TODO Auto-generated method stub
//Super class reference to sub class Object
Dog dog = new Animal();
dog.eat();
dog.bow();
//Completely converted into pure Dog class Object
Dog d = (Dog) dog;
d.eat();
d.bow();
}
}
class Dog {
public void eat() {
System.out.println("Dog eat Biscuits");
}
public void bow() {
System.out.println("Dog bow");
}
}
class Animal extends Dog {
public void eat() {
System.out.println("Animal eat Food");
}
}
Animal eat Food
Dog bow
Animal eat Food
Dog bow
你的概念不正确兄弟...
class Animal extends Dog
动物怎么能延伸到狗?.这就像在说--“每一种动物都是狗”。这是错误的...所以,应该是相反的...
这个例子只会让你更加困惑…
我正在努力理解在这段代码中创建的C()对象。 我理解,当它在第3行创建时,它是一个对象,具有A类中的引用。我还了解到,您可以从B类中的引用中引用第4行的相同对象。但是我不明白第4行参考o1的施法。这改变了对象还是仅仅改变了它被引用的方式? 我真的很感激你的解释:)谢谢
问题内容: 我对接口和类实现接口有疑问。 这是我的代码: 我想创建一个这样的实例: 可以,但是如何从接口实例中调用?这是安全的吗? 感谢帮助。 问题答案: 是的,就可以了(如果你改变的声明来实现),并作为参考真的很安全,只要 不 参考的实例。 但是,这通常是个坏主意。使用接口的全部目的是能够与 任何 实现一起使用- 它是将抽象与实现分开。如果你然后将需要一个具体的实现,你还不如让的类型正好与开始。
问题内容: 有人可以启发我为什么我没有得到这个片段吗?我对为什么它不能按我预期的那样非常感兴趣。我现在不在乎这是否是不好的设计。 这是Java版本,编译和运行输出: 问题答案: 类型擦除:泛型仅是一种语法功能,编译器将其删除(出于兼容性原因),并 在需要时 用强制转换代替。 在运行时,该方法不知道类型(这就是为什么无法实例化的原因)。的调用实际上是的调用。之所以被转换为,是因为无边界类型的擦除是(
在的内部类中。 演员们在这里是怎么工作的?我在这里期待,因为我们要将一个纯超类对象转换为子类。
问题内容: 我对shortJava中的原始类型有疑问。我正在使用JDK 1.6。 如果我有以下情况: 编译器不想进行编译-它说它“不能从int转换为short”,并建议我进行强制转换为short,因此: 确实有效。但是我的问题是为什么我需要演员表?a和b的值在的范围内short-短值的范围是。当我想执行操作(我没有检查其他操作)时,也需要进行强制转换。 如果对原始类型执行相同的操作int,则无需将
问题内容: 我对 Java中的原始类型有疑问。我正在使用JDK 1.6。 如果我有以下情况: 编译器不想进行编译-它说它“不能从int转换为short”,并建议我进行强制转换为short,因此: 确实有效。但是我的问题是为什么我需要演员表?a和b的值在的范围内short-短值的范围是{-32,768,32767}。当我想执行操作-,(我没有检查其他操作)时,还需要进行强制转换。 如果对原始类型执行