abstract class Shape {
init {
println("执行Shape的初始化块......")
}
var color = ""
abstract fun calPerimeter(): Double
abstract val type: String
constructor() {}
constructor(color: String) {
println("执行Shape的构造器...")
this.color = color
}
}
抽象类不能用于创建实例,只能当作父类被其子类继承。
class Triangle(
color: String, var a: Double,
var b: Double, var c: Double
) : Shape(color) {
fun setSides(a: Double, b: Double, c: Double) {
if (a >= b + c || b >= a + c || c >= a + b) {
println("三角形两边之和必须大于第三边")
return
}
this.a = a
this.b = b
this.c = c
}
//重写Shape类的计算周长的抽象方法
override fun calPerimeter(): Double {
return a + b + c
}
//重写Shape类的代表形状的抽象属性
override val type: String = "三角形"
}
class Circle(color: String, var radius: Double) : Shape(color) {
override fun calPerimeter(): Double = 2 * Math.PI * radius
override val type: String = "圆形"
}
fun main(args: Array<String>) {
var s1: Shape = Triangle("黑色", 3.0, 4.0, 5.5)
var s2: Shape = Circle("黄色", 4.0)
println(s1.type)
println(s2.type)
println(s1.calPerimeter())
println(s2.calPerimeter())
}
//定义一个密封类
sealed class Apple {
abstract fun taste()
}
open class RedFuji : Apple() {
override fun taste() {
println("红富士苹果今年真贵,但是还是很甜。")
}
}
data class Gala(var weight: Double) : Apple() {
override fun taste() {
println("嘎啦苹果也不便宜,但更清脆,重量为${weight}")
}
}
fun main(args: Array<String>) {
var ap1: Apple = RedFuji()
var ap2: Apple = Gala(3.5)
ap1.taste()
ap2.taste()
}
abstract class Shape {
init {
println("执行Shape的初始化块......")
}
var color = ""
abstract fun calPerimeter(): Double
abstract val type: String
constructor() {}
constructor(color: String) {
println("执行Shape的构造器...")
this.color = color
}
}
抽象类不能用于创建实例,只能当作父类被其子类继承。
class Triangle(
color: String, var a: Double,
var b: Double, var c: Double
) : Shape(color) {
fun setSides(a: Double, b: Double, c: Double) {
if (a >= b + c || b >= a + c || c >= a + b) {
println("三角形两边之和必须大于第三边")
return
}
this.a = a
this.b = b
this.c = c
}
//重写Shape类的计算周长的抽象方法
override fun calPerimeter(): Double {
return a + b + c
}
//重写Shape类的代表形状的抽象属性
override val type: String = "三角形"
}
class Circle(color: String, var radius: Double) : Shape(color) {
override fun calPerimeter(): Double = 2 * Math.PI * radius
override val type: String = "圆形"
}
fun main(args: Array<String>) {
var s1: Shape = Triangle("黑色", 3.0, 4.0, 5.5)
var s2: Shape = Circle("黄色", 4.0)
println(s1.type)
println(s2.type)
println(s1.calPerimeter())
println(s2.calPerimeter())
}
//定义一个密封类
sealed class Apple {
abstract fun taste()
}
open class RedFuji : Apple() {
override fun taste() {
println("红富士苹果今年真贵,但是还是很甜。")
}
}
data class Gala(var weight: Double) : Apple() {
override fun taste() {
println("嘎啦苹果也不便宜,但更清脆,重量为${weight}")
}
}
fun main(args: Array<String>) {
var ap1: Apple = RedFuji()
var ap2: Apple = Gala(3.5)
ap1.taste()
ap2.taste()
}