【云计算】scala面向对象解析
小标 2018-12-13 来源 : 阅读 694 评论 0

摘要:本文主要向大家介绍了【云计算】scala面向对象解析,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。

本文主要向大家介绍了【云计算】scala面向对象解析,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。


scala面向对象基本上与Java SE中OOP(面向对象编程)类似。


scala 中没有 static 关键字,所以 对于一个class来说,所有的方法和成员变量在实例被 new 出来之前都是无法访问的


因此在class中的main方法没什么用了


scala 的object 中所有成员变量和方法默认都是 static 的,所以可以直接访问main方法


1.在Scala中声明private变量,Scala编译器会自动生成get,set方法


2.在Scala中变量需要初始化


3.在Scala中没有静态修饰符static,在object下的成员全部都是静态的


4.如果在类中声明了与该类同名的object则该object是该类的”伴生对象”


可以理解为Scala把类中的static集中放到了object对象中,伴生对象和类文件必须是同一个源文件,可以用伴生对象做一些初始化操作.


5.在Java中可以通过interface实现多继承,在Scala中可以通过特征(trait)实现多重继承,但是与Java不同的是,它可以定义自己的属性和实现方法体


6.object不能提供构造器参数,也就是说object必须是无参的


Scala中object与class的区别


在Scala中,类可以和对象同名,该对象称为该类的伴生对象,类和伴生对象可以相互访问他们的私有属性,但是它们必须在同一个源文件中


类只会被编译,不能直接执行,类的声明和主构造器在一起被声明,在一个类中,主构造器只有一个.


类和它的伴生对象可以相互访问其私有成员


class和object的一个差别是,单例对象不带参数,而类可以.因为你不能用new关键字实例化一个单例对象,你没有机会传递给它参数


1、类&属性&方法的定义


eg:


class People {
  //定义属性
  var name:String=""
  val age:Int=10
  
  //定义方法
  def  eat():String={
    name+"eat pipea"
  }
  
  def watchFootball(teamName:String): Unit ={
    println(name+"is watching match of "+teamName)
  }
}


object SimpleObjectDemo {
  def main(args: Array[String]): Unit = {
    val people = new People()      //创建对象
    people.name="Messi"       //为namme赋值
    println("name is :"+people.name)
    println("name is :"+people.name+"age is :"+people.age)

    //函数调用
    println("invoke eat method:"+people.eat())

    //
    println("incoke watchFootball method:"+people.watchFootball("Barcelona"))
  }
}


2、构造方法


eg:


class ConstrutorExtendsDemo {

}


class Person (val name:String,val age:Int){
  println("Person constructor enter~~~~~~~~~~~~~~~~")
  val school="kgc"
  println("Person constructor leave~~~~~~~~~~~~~~~")
}


class ConstrutorExtendsDemo extends App{
  //调用主构造器
  var person=new Person("zhangsan",21)
  println("name is:"+person.name+",age is :"+ person.age+",school is :"+person.school)
}


3、继承


class Student(name:String,age:Int,var major:String) extends Person(name,age){
  println("Student constructor enter~~~~~~~~~")
  println("Student constructor leave~~~~~~~~~~~~~~~")
}


class ConstrutorExtendsDemo extends App{
 //初始化子类对象
  var student = new Student("wangwu",15,"Math")
  println("name is :"+ student.name + "age is :"+ student.age + "major is :"+ student.major + "school is :"+ student.school)
  println(student)
}


注意:


子类构造方法触发之前要先触发其父类的构造方法


父类中已有的字段无需使用val/var修饰,只有新增的字段才需要val/var修饰


4、抽象类


scala中抽象类的特点:


1) 类的一个或多个方法没有完整的实现(只有定义,没有实现)


2)声明抽象方法不需要加abstract关键字,只需不写方法体


3)子类重写父类的抽象方法时不需加override


4)子类重写父类的抽象属性时不需加override


5)父类可以声明抽象字段(没有初始值的字段)


class AbstractDemo {

}


abstract class Person2 {
  //属性和方法无需添加abstract关键字
  def  speak
  
  val name:String
  var age:Int
}


class Student2 extends Person2{
def speak(): Unit ={
  //返回值为Unit
  println("speak~~~~~~~~~~")
}
  val name="zhangsan"
  var  age=100
}


class AbstractDemo extends App{
  val s = new Student2
  s.speak()
  println("name is:"+s.name+",age is "+s.age)
}


          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程