java中的继承-我无法理解的东西
关于Java中的继承,我有一个无法理解的问题: 我有两门课:java中的继承-我无法理解的东西,java,Java,关于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
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
的类型是什么?为什么?这里涉及两种不同的类型:
- 变量
的类型是cd
李>C
- 它引用的对象的类型是
D
- 所以我们可以这样介绍继承的概念
从前一个类中确定并拖动其“”的特性和质量,并为我们自己创建一个类似前一个类的新类,具有前一个类的特性和质量。然后,前一个类将是超级类,新类将是子类
孩子们有他们父母的特点和品质
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);
}
}
我将从以下几点开始回答:
子类引用变量(dd)再次存储子类(D)的对象。为什么cd是C?新的D()是什么意思?
newd()
表示您创建了一个D
类型的对象。cd
变量的类型是C
,因为您已将cd
变量的类型声明为C
。我看不出这是如何回答这个问题的。此外,有些句子非常令人困惑。宾语始终是D
。强制转换只会将视图缩小为对象,但不会更改对象本身。因此,您可以将视图缩小为狗
到动物
。它仍然是一只狗
,但您希望编译器忘记这一点,并像对待动物一样处理它。这使得可以将猫
和狗
添加到列表
中,当您稍后获得该列表中的项目时,它们仍然是猫
和狗
,但您只知道它们是动物
。使用铸造,您可以尝试再次提升视图。但是,在您尝试将猫
投射到狗
之前,您应该检查instanceof
。