Scalaのクイックスタート(4) - 継承、インターフェース
承継
1.継承の概念は:省略
2.テンプレート:
class Person(n:String,a:Int) {
var name:String=n
var age:Int=a
def showInfo():Unit={
println("学生信息如下")
println("名字:"+name)
println("年龄:"+age)
}
}
class Student(n:String,a:Int) extends Person(n,a){
def study():Unit={
println(this.name+". Im learning scala. ")
}
}
書き換えに記載の方法
直接メソッドの前にオーバーライドして修正
ケース:
class OverRideTest {
def print(): Unit ={
println("print")
}
}
class ExtendOver extends OverRideTest {
override def print(): Unit = {
println("aaa")
}
}
object Over{
def main(args: Array[String]): Unit = {
val ex=new ExtendOver
ex.print()
}
}
第二に、上のタイプおよびキャスト
1.クラスオブジェクトを取得し
Java中,获取String的Class对象
Class clazz=String.class
Scala中
val clazz=classOf[String]
JavaのOBJのinstanceof Tで同様obj.isInstanceOf [T]について2。
println("".isInstanceOf[String])
キャストobj.asInstanceOf Javaのようで[T](T)は、objについて3。
println(1.0.asInstanceOf[Int])
第三に、抽象クラス
抽象クラス抽象フィールドだけでなく、一般のフィールドは、唯一の抽象クラス抽象メソッドは、次の場合です
abstract class Animal{
var name:String
var age:Int
def toString()
}
実装クラス
class Dog extends Animal{
override var name: String = (){
println("")
}
override var age: Int = _
}
第四に、匿名のサブクラス
唯一のクラスがこのクラスを使用すると仮定しての過程で、我々は匿名のサブクラスの機能を使用することができます
val animal=new Animal(){
var name:String=_
var age:Int=_
override def toString(): Unit ={
println("prprpr")
}
}
V.インタフェース
インタフェースのための特性、インターフェイスインスタンス
trait talk{
def say(): Unit ={
println("say")
}
}
trait loud{
def hey(): Unit ={
println("hey")
}
}
class Test extends loud with talk{
def test: Unit ={
println("test")
}
}
object run{
def main(args: Array[String]): Unit = {
val t=new Test
t.hey
t.say
t.test
}
}
六、ケースクラス
class Dog(name:String,age:Int){}
object run{
def main(args: Array[String]): Unit = {
val hashiqi=new Dog("hashiqi",1);
val hashiqi2=new Dog("hashiqi",1);
println(hashiqi==hashiqi2)//false
println(hashiqi.equals(hashiqi2))//false
}
}
把class改成case class,那么比较都为true
七、イテレータ
object run{
def main(args: Array[String]): Unit = {
val tup:(Double,Int,String,Boolean,Char)=(1.0,88,"abc",false,'a')
val iter:Iterator[Any] = tup.productIterator
val res=iter.map((x)=>{
x match {
case o:Int=> println(s"${o+1}")
case "abc"=> println("99")
case _ => println("??")//相当于default
}
});
while(res.hasNext) res.next()
}
}
八、部分関数
分類のために定義された入力値
object run{
def main(args: Array[String]): Unit = {
def xxx:PartialFunction[Any,String]={
case "Hi" => "hello"
case x:Int=> s"$x.. is int"
case _ => "none"
}
println(xxx(444))
}
}
九、暗黙の型変換
object run{
def main(args: Array[String]): Unit = {
implicit val a="aaa"
def aaa(implicit name:String):Unit={
println(name)
}
aaa//隐式吧上面的变量传进来
}
}