我对Java中的继承有疑问,我无法理解:
我有这两个班级:
public class C
{
public void foo(D d)
{
System.out.println("cd");
}
}
public class D extends C
{
public void foo(C c)
{
System.out.println("dc");
}
public void foo(D d)
{
System.out.println("dd");
}
}
主要:
public static void main(String[] args)
{
C cd = new D();
D dd = (D)cd;
}
每个cd
和dd
的类型是什么?为什么?
答案 0 :(得分:6)
这里涉及两种不同的类型:
变量的类型独立于当前碰巧引用的对象的类型 - 反之亦然,对象的类型不依赖于访问它的变量的类型。因此,当您将对象分配给另一个不同的变量时,其类型不会受到影响。
所以,
cd
为C
; D
。答案 1 :(得分:1)
所以我们可以像这样介绍继承的概念......
来自前一课程的某些内容并拖拽其中的特征和品质。 ,并为我们自己创建一个像前面的类一样的新类,具有前面类的特性和特性。然后,前面的类将是超类,而新类将是Sub类..
前: - 孩子们有他们的父母'特点和品质。
import javax.swing.*;
class Form extends JFrame{
}
class Demo{
public static void main(String[] args){
Form f1=new Form();
f1.setSize(300,300);
f1.setTitle("Form");
f1.setDefaultCloseOperation(Form.EXIT_ON_CLOSE);
f1.setVisible(true);
}
}
答案 2 :(得分:1)
我将从以下几点开始回答:
这就是说。原来是C(父类)的引用的cd现在隐式转换为D(Child)类。 子类参考变量(dd)再次存储子类(D)的对象。