摘要:本文主要向大家介绍了【云计算】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)
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号