当前位置: 首页 > 知识库问答 >
问题:

在子类中声明与父类中相同的属性

徐文彬
2023-03-14

我最近盯着Kotlin看,有Java的经验。在Java中,我们可以声明与在parent中同名的字段。当我在kotlin中这样做时,它给出错误name hides超级类型user的成员。我错过了什么?

open class User(protected var name: String)

class TwitterUser(var name: String) : User(name)
public class A {
    protected String name;
}

public class B extends A {
    String name;
}

共有1个答案

施念
2023-03-14

问题是,您隐藏了原始属性的实现。但无论如何也有一种可能:

open class User(protected open var name: String)

class TwitterUser(override var name: String) : User(name)

您只需考虑,这主要改变了属性的实现。您将无法单独访问user.nametwitteruser.name。都是一样的。

 类似资料:
  • 我是 Kotlin 的新手,我有以下疑问 - 使用Java到Kotlin转换器(此链接),我将以下Java代码转换为Kotlin。 Java类: 生成的Kotlin类: 但是我不明白Java代码和生成的静态编程语言代码是如何等价的,因为类数据成员的可见性修饰符从私有(Java)变为公共(静态编程语言)。 我相信,如果可见性修饰符被保留(数据成员在静态编程语言中被声明为私有),getter和sett

  • 我正在做一个绘图项目,我有一些工具(例如画笔、橡皮擦等),它们都是自己的类,每个都继承自一个抽象工具类,具有一些基本属性和抽象/非抽象方法。我看到的主要问题是,当我需要更改这些工具的颜色时,我想找出一种方法来为所有工具更改颜色,但也允许某些工具(如橡皮擦)保持不变,因为它的颜色应该始终只是背景色。 我正在从其他地方接收onColorChange(int newColor)方法调用,但这是触发工具颜

  • 问题内容: 在什么情况下可能会得出与之不同的结果? 我认为这可能与外部类的子类实例化一个未声明为静态的内部类有关,但我无法以这种方式获得区别: 输出: 问题答案: 在此处找到http://kickjava.com/1139.htm#ixzz1mv2nEWg7: “具有getDeclaringClass的替代项是,在Java语言规范中,匿名内部类不计为类的成员,而命名内部类为。因此,此方法为匿名类返

  • 我是C语言的新手,正在寻找关于以下问题的建议。我正试图创建一个程序,生成树的形状(是的,真正的树)。这些形状完全由树枝构成。为此,我开始编写一个名为Branch的类。主要的想法是。cpp I创建一个类Branch的实例,它本身将创建Branch的实例。这适用于迭代。 目前,该计划的结构如下: main.cpp: 树枝h: 树枝cpp: 现在,这个程序可以工作,但是我想通过将每个对象存储在一个向量中

  • 为什么我的子类方法不重写其父类中相同签名的方法? 我有一个类,它扩展了一个抽象类,后者扩展了抽象类Actor(这里的上下文是一个pong游戏)。和都有一个具有相同签名的方法: 目的是让方法重写的方法。这里的问题是,当我在内部调用时,只调用的方法。 在中的上设置的断点会脱扣,而在中的上设置的断点从不脱扣。我还在方法上尝试了,但它仍然调用方法。 目标是让对象以与其他对象不同的速度上下移动。因此方法也会