• 关于scala中的class和trait的一些总结


    trait:

    字面意思是特质或者特征,这个词翻译成特征比较合适。它的意义和java,c#中接口很类似。但是trait支持部分实现,也就是说可以在scala的trait中可以实现部分方法。

    在scala中也是一般只能继承一个父类,可以使用with进行多重继承;

    class:

    Scala类和java类中有些区别,在Scala声明private变量会Scala编译器会自动生成get,set,在Scala中变量是需要初始化的,如果不声明private默认是public的

    object:

    Scala中没有静态修饰符,static,在object下的成员全部都是静态的,如果在类中声明了与该类相同的名字的object则该object是该类的“半生对象”,可以理解把类中的static集中放到了object对象中,伴生对象和类文件必须是同一个源文件,可以用伴生对象做一些初始化的操作

    下面介绍一下,extends和with的关系:(具体看代码)object ClassAnd    trait Pet{ //相当于java 中的一个接口,但是他可以有自己的方法体

        def greet()="hello"
    }
    class Dog extends Pet{
    override def greet(): String = "hello dog"
    }
    class Yellowdog extends Dog{
    override def greet(): String = "I am a yellowdog"
    }
    trait Animal extends Pet{
    override def greet(): String = super.greet()+"!"
    }

    def main(args: Array[String]): Unit = {
    var pet=new Dog
    println( pet.greet())
    pet=new Dog with Animal
    println(pet.greet())

    }
    }
    输出结果:
    hello dog
    hello dog!
    看到这个结果,明显看的出来,dog这个 对象除了自己方法的特性,还拥有Animal 的特性。所以他既继承了父类的特性,而且还有其他的特性。
  • 相关阅读:
    全文搜索 Contains 与like 的区别
    Easyui _treegrid 动态加载子节点
    十五、ES开启SSL访问
    十二、ES分词器
    十一、ES监控
    十六、源码部署EFK之快乐没有了
    十四、ES开启密码认证
    十三、ES备份恢复
    十七、优化ES
    正则表达式
  • 原文地址:https://www.cnblogs.com/gxgd/p/8780237.html
Copyright © 2020-2023  润新知