1、object对象
object helloworld {
def main(args: Array[String]) {
//由于Scala没有静态概念,所以静态属性可以通过object来实现
//编译完成之后会生成对应的类,方法都是静态方法,非静态成员对应到单例类中
//单例类以Person$为类名称
object Person{
private var s = "hello";
def fun(s:String) = println(s);
}
}
}
}
2、伴生对象(类名和object名称相同,并且需要在同一个Scala文件中)
package com.cr.oop
/**
* 伴生类和伴生对象
* class Student是伴生对象Object Student的伴生类
* object Student是伴生类class Student的伴生对象
*/
//伴生类
class Student(var name:String,var address:String){
private var phone="110"
//直接访问伴生对象的私有成员
def infoCompObj() = println("伴生类中访问伴生对象:" + Student.sno)
}
//伴生对象
object Student {
private var sno:Int = 100
def incrementSno()={
sno += 1 //加1
sno //返回sno
}
def main(args: Array[String]): Unit = {
println("单例对象:" + Student.incrementSno()) //单例对象
//实例化伴生类
val obj = new Student("yy","bj")
obj.infoCompObj();
}
}
---》
单例对象:101
伴生类中访问伴生对象:101
3、扩展对象—-trait===》类似于接口
4、抽象类
//抽象类
abstract class Animal1{
//抽象字段
var name:String
var size:Int
//抽象方法
def walk
}
//抽象类实现类
class Cat(var length:Int)extends Animal1{
override var name = "cat"
override var size = 100
override def walk{
println(this.name + ":" + this.size + ":" + this.length)
}
}
object helloworld {
def main(args: Array[String]): Unit = {
val cat = new Cat(200);
cat.walk;
println("name:" + cat.name);
println("size:" + cat.size);
println("length:" + cat.length);
}
}
5、apply方法
对象后面直接跟参,隐形调用apply方法
Array
6、Scala的编译过程
scalac XXX.scala—产生Scala文件——->scala xxxx—–运行Scala程序
另外一种一步到位的方法
scala XXX.scala