Chapter 7 - Section 1

	fun main(args: Array<String>) {
		val x:Any = Any()
		println(x)

		val sup = SuperClass(42)
		println(sup)

		val sub = SubClass(53)
		println(sub)

		println(sup.multiply(100))
		println(sub.multiply(100))

	}

	open class SuperClass(anInt: Int){
		protected val _anInt = anInt

		override fun toString(): String {
			return "${this::class.simpleName} {antInt: $_anInt}"
		}

		open fun multiply(factor: Int): Int {
			return _anInt * factor
		}
	}

	class SubClass(anInt:Int): SuperClass(anInt) {
	//    override fun toString(): String {
	//        return "SubClass{anInt: $_anInt}"
	//    }

		override fun multiply(factor: Int): Int {
			return super.multiply(factor) * factor
		}
	}