【发布时间】:2021-07-02 12:46:27
【问题描述】:
public class Shape {
public static void main (String[] args) {
Circle c = new Circle(5);
System.out.println (c.getArea());
c.setColour("Green");
System.out.println (c.getColour());
}
}
interface Colour {
String getColour();
void setColour (String colour);
}
abstract class Shapes implements Colour {
abstract double getArea();
private String colour = "Red";
public String getColour() {
return colour;
}
public void setColour(String colour) {
this.colour = colour;
}
}
class Circle extends Shapes {
private int radius;
public Circle(int radius) {
this.radius = radius;
}
public double getArea() {
return Math.PI * radius * radius;
}
}
我尝试了一个 Swift 解决方案,代码如下
import Cocoa
protocol Colour {
var colour: String { get set }
func getColour() -> (String)
func setColour(colour: String)
}
class Shape: Colour {
var colour: String = "Red"
init(colour: String) {
self.colour = colour
}
func getColour() -> (String) {
return colour
}
func setColour(colour: String) {
self.colour = colour
}
func getArea() -> Double {
return 0.0
}
}
class Circle: Shape {
let radius: Double
init(radius: Double) {
self.radius = radius
}
override func getArea() -> Double {
return radius * radius * Double.pi
}
}
我编写了代码来创建一个接口“color”、一个超类“shape”和一个子类“Circle”。目的是作为一个新程序员了解更多关于继承和多重继承的知识。 Java 代码按预期工作。
但我收到一个错误“在从初始化程序返回之前,所有路径上都没有调用'super.init'”,上面的 Swift 代码。由于我是 swift 和多重继承的新手,我不知道如何纠正这个错误。
我该如何纠正这个问题?
【问题讨论】:
标签: java swift inheritance multiple-inheritance paradigms