@
目录
- 说在前面
- 运行原理
- 代码体现
- 解析
说在前面
- scala是纯面向对象的语言,C是纯面向过程的语言,Java就是面向过程 面向对象的语言。
- 在说到伴生对象之前,要先说到java的
static
关键字,static关键字修饰的变量、方法可以使类对象共享,而非某个对象单独拥有,所以是通过类名.变量名/方法名
去调用。而这违背了scala面向对象的初衷,因为这没有通过对象去调用。
运行原理
scala的编译与java大同小异:
- Java运行原理
- 先编译,再解释
- .java源文件--->编译器(javac)--->.class字节码文件--->JVM(java 不同平台)--->机器指令
- Scala运行原理
- 先编译,再解释
- .scala源文件--->编译器(scalac)--->.class字节码文件--->JVM(scala 不同平台)--->机器指令
代码体现
观察下面这段代码,Scala01_HelloWorld.scala
代码语言:javascript复制object Scala01_HelloWorld {
def main(args: Array[String]): Unit = {
println("HelloScala")
}
}
经过编译后,可以看见,scala文件编译成了两个.class文件
使用反编译工具打开看看它们:
Scala01_HelloWorld.class,伴生类
代码语言:javascript复制package com.sun.scala.chapter01;
import scala.reflect.ScalaSignature;
@ScalaSignature(bytes="