了解Scala
使用Java Decompiler反编译字节码到.class源文件可以看到引入Scala库的逻辑。并且:
- scala源文件中的
HelloScala
对象编译后成为了一个类,但对象本身编译后就是生成的另一个类HelloScala$
类的单例对象HelloScala$.MODULE$
,称之为伴生对象。 HelloScala$
有一个main
实例方法,HelloScala
类的静态方法通过这个单例对象转调这个实例方法。完成打印。- 说明Scala比Java更面向对象。
使用idea编写Scala项目
1.新建maven项目
2.安装Scala插件
3.右键单击项目添加scala支持
4.创建scala类
5.运行(idea有代码补全会舒服很多)
尝试调用java类库
System.out.println("hello scala from java")
scala删除了static关键字更好的实现了面向对象,体现:
java中,static关键字的使用的一个举例
public class Student{ private static String school = "std"; public void printInfo(){ System.out.println(Student.school) } }
但是这并不完全的”面向对象“,因为static关键字的存在,调用时,使用的是School这个类而不是一个对象
而在scala中,使用伴生对象与伴生类的关系,解决了这个问题,使得Scala更加得“面向对象”
class Student(name:String,age:Int) { def printInfo() : Unit = { println(name + "" + age + "" + Student.school) } } //引入伴生对象 object Student{ val school : String = "std" }
class Student是object Student的伴生类;object Student是class Student伴生对象。彼此相伴相生,互相之间可以访问彼此的私有成员
测试一下
class Student(name:String,age:Int) { def printInfo() : Unit = { println(name + " " + age + " " + Student.school) } } //引入伴生对象 object Student{ val school : String = "std" def main(args: Array[String]): Unit = { val alice = new Student("alice",20) alice.printInfo() } }
明天学习scala中的数据类型