Swift中的继承有点令人困惑

use*_*435 4 inheritance swift

继承如何在Swift中工作?根据我的理解,所有父母都应该由孩子替换.由于某些原因,它无法正常工作.以下是一个例子:

public class Car {

var model: String

func getModel()-> String?{
   return model
}
}


 public class CompactCar: Car {
  // some codes

 }

public class carRedo{
 var cartyp:Car!
init(carType: Car){
   self.cartyp = carType
}
}
Run Code Online (Sandbox Code Playgroud)

当我将CompactCar传递给carRedo构造函数时,我收到一个编译错误:

carRedo(CompactCar)// error
Run Code Online (Sandbox Code Playgroud)

这个错误:

无法将类型'(CompactCar).Type'(又名'CompactCar.Type')的值转换为预期的参数类型'Car'

das*_*ght 5

您不能将CompactCar(或任何其他类名称)传递给构造函数carRedo.您需要传递一个类型的对象CompactCar:

let mini = CompactCar()
let redo = carRedo(mini)
Run Code Online (Sandbox Code Playgroud)

如果您不需要carRedo单独访问您传递给的汽车,您可以将上面的两个电话"折叠"成一个:

let redo = carRedo(CompactCar())
//                           ^^
Run Code Online (Sandbox Code Playgroud)