相关疑难解决方法(0)

在Swift中覆盖不同类型的超类属性

在Swift中,有人可以解释如何使用从原始属性子类化的另一个对象覆盖超类的属性吗?

举个简单的例子:

class Chassis {}
class RacingChassis : Chassis {}

class Car {
    let chassis = Chassis()
}
class RaceCar: Car {
    override let chassis = RacingChassis() //Error here
}
Run Code Online (Sandbox Code Playgroud)

这给出了错误:

Cannot override with a stored property 'chassis'
Run Code Online (Sandbox Code Playgroud)

如果我将底盘改为'var',我会收到错误:

Cannot override mutable property 'chassis' of type 'Chassis' with covariant type 'RacingChassis'
Run Code Online (Sandbox Code Playgroud)

我在"覆盖属性"下的指南中唯一能找到的东西表示我们必须覆盖getter和setter,这可能有助于更改属性的值(如果它是'var'),但是如何更改属性类呢?

swift

122
推荐指数
3
解决办法
6万
查看次数

如果覆盖类的子类中的字段,子类有两个具有相同名称(和不同类型)的字段?

我有3个班:

public class Alpha {
    public Number number;
}

public class Beta extends Alpha {
    public String number;
}

public class Gama extends Beta {
    public int number;
}
Run Code Online (Sandbox Code Playgroud)

为什么以下代码编译?而且,为什么测试通过没有任何运行时错误?

@Test
public void test() {
    final Beta a = new Gama();
    a.number = "its a string";
    ((Alpha) a).number = 13;
    ((Gama) a).number = 42;

    assertEquals("its a string", a.number);
    assertEquals(13, ((Alpha) a).number);
    assertEquals(42, ((Gama) a).number);
}
Run Code Online (Sandbox Code Playgroud)

java subclassing jls

51
推荐指数
2
解决办法
4万
查看次数

Swift中的属性和变量有什​​么区别?

从几个初始教程中,我看到属性属于一个类,并且基本上是C++世界中使用的"全局变量"(在此前编码).我还将变量看作更多只在方法中使用/存储信息的"本地"实体.

然后我遇到了这个Quora线程:https://www.quora.com/Apple-Swift-programming-language/What-is-the-difference-between-a-property-and-a-variable 现在我看到属性正在能够执行与其调用相关的代码.这很酷,但也为我打开了一大堆其他问题.

还有其他简单明了的方法来记住属性和变量之间的区别吗?

ios swift

2
推荐指数
2
解决办法
2543
查看次数

标签 统计

swift ×2

ios ×1

java ×1

jls ×1

subclassing ×1