繁体   English   中英

java中的继承-我无法理解的东西

[英]Inheritance in java - something that i cannot understand

我对 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;   
}

cddd的类型是什么,为什么?

这里涉及两种不同的类型:

  1. 变量类型;
  2. 变量引用的对象的类型。

变量的类型与它当前所引用的对象的类型无关——反之亦然,对象的类型不依赖于访问它的变量的类型。 因此,当您将一个对象分配给另一个不同的变量时,它的类型不会受到影响。

所以,

  • 变量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);
        }
}

将从以下几点开始我的回答:

  1. D类是C类的扩展,所以D类是C类的子类。
  2. 左侧变量称为引用变量,右侧带有 new 运算符的赋值称为对象。
  3. 第一行显示 D(子类)对象被分配给父类的引用变量。 这意味着 cd 是 Parent 类型的引用变量,它保存了 Child 类的对象。 这意味着在运行时,编译器会检查 Child 类是否是 Parent 类的类型,如果是,则将其强制转换并显示 Child 方法的输出。
  4. 每当在 cd 上调用 foo 方法时,它都会调用 Child 类中存在的 foo 方法。
  5. 第 2 行显示 D(子类)引用变量 dd 保存 D(子类)的对象。

这意味着。 cd 是类 C(Parent) 的引用,现在隐式转换为类 D(Child)。 子类引用变量(dd)再次存储子类(D)的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM