Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // struct Point {
- // var x: Int
- // var y: Int
- // // тук ти се дава init(x: Int, y: Int)
- // }
- //
- // struct Point3D {
- // var x: Int = 1
- // var y: Int = 1
- // var z: Int = 1
- // // тук ти дават празен init(), който просто ще инициализира трите пропъртита с 1
- // // и освен това ти се дава и init(x: Int, y: Int, z: Int) като по-горе
- // }
- //
- // class Point2D {
- // var x: Int
- // var y: Int
- // // тук не ти се дава никакъв init и задължително (!!) трябва да си създадеш
- // }
- //
- // class Point2D {
- // var x: Int?
- // var y: Int?
- // // тук ти се дава САМО init(), който слага и двете на nil
- // // причината е, че и двете имат default стойност (nil)
- // }
- //
- // class Point2D {
- // var x: Int = 2
- // var y: Int = 1
- // // същото като горното
- // // причината е същата като горната
- // }
- class Shape {
- var numberOfSides: Int
- var name: String
- init() {
- numberOfSides = -1
- name = "няма такава форма..."
- }
- // този конструктор премахва (ако са създадени) всички автоматично създадени
- // конструктори
- init(nSides: Int, name: String) {
- numberOfSides = nSides
- self.name = name
- }
- }
- class Rectangle: Shape {
- var width: Int = 2
- var height: Int = 2
- // тоя мизерен клас, тъй като няма свои конструктори и всичките му
- // пропъртита имат стойности по подразбиране, получава
- // всички конструктори на родителския клас
- }
- // class Circle: Shape {
- // var radius: Int
- // // тоя клас е още по-мизерен и не взима конструкторите на
- // // родителския, защото пропъртито му няма стойност
- // // по подразбиране
- //
- // // ако го оставиш така даже няма да се компилира
- // // затова съм го коментирал
- // }
- class Pentagon: Shape {
- var sideLength: Int = 1
- init(sideLength: Int) {
- self.sideLength = sideLength
- super.init()
- }
- // след като направиш този конструктор (дори sideLength в случая да има default стойност)
- // се премахват всички автоматично наследени конструктори
- // т.е. разполагаш само с този
- }
- print("regular shape ----------------------")
- let a = Shape()
- print("name of regular shape \(a.name)")
- print("rectangle ----------------------")
- let b = Rectangle()
- print("width of rectangle \(b.width)")
- print("height of rectangle \(b.width)")
- print("second rectangle----------------------")
- let c = Rectangle(nSides: 4, name: "Правоъгълник")
- print("name of second rectangle \(c.name)")
- print("number of sides \(c.numberOfSides)")
- print("pentagon-----------------")
- let d = Pentagon(sideLength: 2)
- print("name of polygon \(d.name)")// struct Point {
- // var x: Int
- // var y: Int
- // // тук ти се дава init(x: Int, y: Int)
- // }
- //
- // struct Point3D {
- // var x: Int = 1
- // var y: Int = 1
- // var z: Int = 1
- // // тук ти дават празен init(), който просто ще инициализира трите пропъртита с 1
- // // и освен това ти се дава и init(x: Int, y: Int, z: Int) като по-горе
- // }
- //
- // class Point2D {
- // var x: Int
- // var y: Int
- // // тук не ти се дава никакъв init и задължително (!!) трябва да си създадеш
- // }
- //
- // class Point2D {
- // var x: Int?
- // var y: Int?
- // // тук ти се дава САМО init(), който слага и двете на nil
- // // причината е, че и двете имат default стойност (nil)
- // }
- //
- // class Point2D {
- // var x: Int = 2
- // var y: Int = 1
- // // същото като горното
- // // причината е същата като горната
- // }
- class Shape {
- var numberOfSides: Int
- var name: String
- init() {
- numberOfSides = -1
- name = "няма такава форма..."
- }
- // този конструктор премахва (ако са създадени) всички автоматично създадени
- // конструктори
- init(nSides: Int, name: String) {
- numberOfSides = nSides
- self.name = name
- }
- }
- class Rectangle: Shape {
- var width: Int = 2
- var height: Int = 2
- // тоя мизерен клас, тъй като няма свои конструктори и всичките му
- // пропъртита имат стойности по подразбиране, получава
- // всички конструктори на родителския клас
- }
- // class Circle: Shape {
- // var radius: Int
- // // тоя клас е още по-мизерен и не взима конструкторите на
- // // родителския, защото пропъртито му няма стойност
- // // по подразбиране
- //
- // // ако го оставиш така даже няма да се компилира
- // // затова съм го коментирал
- // }
- class Pentagon: Shape {
- var sideLength: Int = 1
- init(sideLength: Int) {
- self.sideLength = sideLength
- super.init()
- }
- // след като направиш този конструктор (дори sideLength в случая да има default стойност)
- // се премахват всички автоматично наследени конструктори
- // т.е. разполагаш само с този
- }
- print("regular shape ----------------------")
- let a = Shape()
- print("name of regular shape \(a.name)")
- print("rectangle ----------------------")
- let b = Rectangle()
- print("width of rectangle \(b.width)")
- print("height of rectangle \(b.width)")
- print("second rectangle----------------------")
- let c = Rectangle(nSides: 4, name: "Правоъгълник")
- print("name of second rectangle \(c.name)")
- print("number of sides \(c.numberOfSides)")
- print("pentagon-----------------")
- let d = Pentagon(sideLength: 2)
- print("name of polygon \(d.name)")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement