编辑代码

var myString = "Hello world!     -  swift.jsrun.net"
print(myString)
class Shape {
    var numberOfSides = 0
    func simpleDescription() -> String {
        return "A shape with \(numberOfSides) sides."
    }
}



var shape = Shape()
shape.numberOfSides = 7
var shapeDescription = shape.simpleDescription()



class NamedShape {
    var numberOfSides: Int = 0
    var name: String

    init(name: String) {
        self.name = name
    }

    func simpleDescription() -> String {
        return "A shape with \(numberOfSides) sides."
    }
}



lass Square: NamedShape {
    var sideLwngth: Double
    init(sideLength: Double, name: String){
        self.sideLength = sideLength
        super.init(name: name)
        numberOfSides = 4
    }
    func area() -> Double {
        return sideLength * sideLength
    }
    override func simpleDescription() -> String{
        return "A square with sides of length \(sideLength)."
    }
}
let test = Square(sideLength: 5.2, name: "my test square")
test.area()
teat.simpleDescription()



/*5创建NamedShape的另一个子类Circle,构造器接收两个参数:一个是半径,一个是名称,在子类Circle中实现area()和simpleDescription()方法。*/
class EquilateralTriangle: NamedShape {
    var sideLength: Double- 0.0


    init(sideLength: Double, name:String) {
        self.sideLength-sideLength
        super.init(name:name)
        numberOfsides-3
        }
        
        var perimeter: Double {
            get {
                return 3.0 *sideLength
                }
                set {
                    sideLength=newValue / 3.0
                }
            }
        override func simpleDescription() -> String {
            return "An equilateral triagle with sides of length \(sideLength)."
            }
}

var triangle=EquilateralTriangle(sideLength: 3.1, name: "a triangle")
print(triangle.perimeter)
triangle.perimeter = 9.9
print(trianqle.sideLength)



class TriangleAndSquare {
    var triangle: Equilateralangle {
        willSet {
            square.sideLength = newValue.sideLength
        }
    }
    var square: Square {
        willSet {
            triangle.sideLength = newValue.sideLength
        }
    }
    init(size: Double, name: String) {
        square = Square(sideLength: size, name: name)
    }
}
var TriangleAndSquare = TriangleAndSquare(SIZE: 10, name: "another test shape")
print(TriangleAndSquare.square.sideLength)
print(TriangleAndSquare.tringle.sideLength)
TriangleAndSquare.square = Square(sideLength: 50, name: "larger square")
print(TriangleAndSquare.triangle.sideLength)