Scala中的继承,抽象,特质

1. 继承

// 父类
class Person(val name:String, val age:Int) {
 	def sayHello():String = name + age;
}
// 子类
// 如果希望使用子类中的值,去覆盖父类中的值,需要加override关键字
class Employee(override val name:String,override val age:Int,val salay:Int) 
        extends Person(name,age) { 
}
object Employee{
 	def main(args:Array[String]) {
	     val pr = new Person("kevin",23)
	     println(pr.sayHello)
	     val ps = new Employee("kai",23,6000)
	     println(ps.sayHello)
	}
}

运行结果

// 如果希望使用子类中的方法,去覆盖父类中的方法,需要加override关键字
class Employee(override val name:String,override val age:Int,val salay:Int) 
        extends Person(name,age) { 
        def sayHello():String = name + age;
}
object Employee{
 	def main(args:Array[String]) {
	     val pr = new Person("kevin",23)
	     println(pr.sayHello)
	     val ps = new Employee("kai",23,6000)
	     println(ps.sayHello)
	     // 使用匿名子类来创建新的对象
	     val pe:Person = new Person("kevin",23) {
       	 override def sayHelllo():String = "kevin"
       	  println(pe.sayHello)
    }
	}
}

运行结果
在这里插入图片描述

2. 抽象

// 使用抽象类。抽象类中包含抽象方法,抽象类只能用来继承
// 父类
abstract class Vihicle {
	def checkType():String
}
class Car extends Vihicle {
	def checkType():String = {"i am car"}
}
class Bysical extends Vihicle {
	def checkType():String = {"i am by"}
}
object {
	def main(args:Array[String]) {
		val c =  new Car
		println(v.checkType());
		val b =  new By
		println(b.checkType());
	}
}

运行结果
在这里插入图片描述

// 使用抽象字段,抽象字段就是一个没有初始值得字段
abstract class Person {
	// 抽象字段,并且没有get,set方法
	val age:Int
	val name:String
}

3. 特质(trait)

// trait就是抽象类。trait跟抽象类最大的区别就是trait支持多继承,使用with关键字连接
// 第一个抽象类
trait Man {
	val id:Int
	val name:String
	val name:String 
  	def sayHello():String = "hello" + name;
}
// 第二个抽象类
trait Actions {
	// 抽象的方法
	def getActionName():String
}
// 子类,提供一主构造函数
class Stu(val id:Int, val name:String) extends Man with Actions {
   def getActionName():String = {"hello"};
}
// 测试类
object Stu {
  def main(args:Array[String])  {
    var s = new Stu(123,"kk")
    println(s.sayHello)
    println(s.getActionName)
  }
}

运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值