Scala特性-如何实现方法
如何从Scala特性-如何实现方法,scala,interface,traits,Scala,Interface,Traits,如何从人员特征(界面)中正确扩展和实施方法发送电子邮件,以便main执行: trait Person { var name:String var gender:Char def sendEmail(subject:String, body:String) } object Employee extends Person { def main(args: Array[String]): Unit = { println("Hello") sendEmail("a
人员特征(界面)中正确扩展和实施方法发送电子邮件,以便main执行:
trait Person {
var name:String
var gender:Char
def sendEmail(subject:String, body:String)
}
object Employee extends Person {
def main(args: Array[String]): Unit = {
println("Hello")
sendEmail("a", "b")
def sendEmail(subject:String, body:String): Unit = {
println("subject" + body)
}
}
}
方法需要是对象的成员,而不是另一个函数(main)中的函数。尝试:
方法需要是对象的成员,而不是另一个函数(main)中的函数。尝试:
您需要实现traitPerson
中声明的所有成员和方法。此外,假设您有多个员工,类
(或案例类
)可能比对象
更合适:
trait Person {
val name: String
val gender: Char
def sendEmail(subject: String, body: String): Unit
}
class Employee(val name: String, val gender: Char) extends Person {
def sendEmail(subject: String, body: String): Unit =
println(s"subject: $subject\n body: $body")
}
object ListEmployees {
def main(args: Array[String]) {
val emp1 = new Employee("Dave", 'M')
val emp2 = new Employee("Jenn", 'F')
emp1.sendEmail("yo", "yo yo yo")
emp2.sendEmail("boo", "boo boo boo")
}
}
ListEmployees.main(Array())
// subject: yo
// body: yo yo yo
// subject: boo
// body: boo boo boo
您需要实现traitPerson
中声明的所有成员和方法。此外,假设您有多个员工,类
(或案例类
)可能比对象
更合适:
trait Person {
val name: String
val gender: Char
def sendEmail(subject: String, body: String): Unit
}
class Employee(val name: String, val gender: Char) extends Person {
def sendEmail(subject: String, body: String): Unit =
println(s"subject: $subject\n body: $body")
}
object ListEmployees {
def main(args: Array[String]) {
val emp1 = new Employee("Dave", 'M')
val emp2 = new Employee("Jenn", 'F')
emp1.sendEmail("yo", "yo yo yo")
emp2.sendEmail("boo", "boo boo boo")
}
}
ListEmployees.main(Array())
// subject: yo
// body: yo yo yo
// subject: boo
// body: boo boo boo
这是一个很好的捕获,但仍然不起作用:Error:(10,8)不可能创建对象,因为:它有2个未实现的成员。/**从object Employee可以看出,缺少的签名如下。*为方便起见,它们可用作存根实现。*/def性别=(x$1:Char):单位=???def名称=(x$1:String):单位=???对象Employee扩展Person{
您还需要实现name
和gender
,类似于var name=“Joe”
和类似于gender
的东西应该足够了,这是一个很好的捕获,但仍然不起作用:错误:(10,8)不可能创建对象,因为:它有2个未实现的成员。/**从object Employee中可以看出,缺少的签名如下。*为了方便起见,这些签名可用作存根实现。*/def-gender_=(x$1:Char):Unit=???def-name_=(x$1:String):Unit=???object Employee扩展Person{
您还需要实现name
和gender
,类似于var name=“Joe”
和类似的gender
应该足够了。您需要在扩展类中实现trait的所有抽象成员。您需要在扩展类中实现trait的所有抽象成员。此行的目的是什么ListEmployees.main(Array())
?(没有它也可以工作)它不是代码的一部分,而是一个用于在上运行测试的命令。ListEmployees.main()
。此行的目的是什么ListEmployees.main(Array())
。