伴生类与伴生对象
scala是纯面向对象的语言(java++),C是纯面向过程的语言,Java就是面向过程+面向对象的语言。
在说到伴生对象之前,要先说到java的static
关键字,static
关键字修饰的变量、方法可以使类对象共享,而非某个对象单独拥有,所以是通过类名.变量名/方法名
去调用。而这违背了scala面向对象的初衷,因为这没有通过对象去调用。
运行原理
scala的编译与java基本一致:
Java运行原理
先编译,再解释
.java源文件--->编译器(javac)--->.class字节码文件--->JVM(java 不同平台)--->机器码
Scala运行原理
先编译,再解释
.scala源文件--->编译器(scalac)--->.class字节码文件--->JVM(scala 不同平台)--->机器码
先看个case:
User.category它不属于对象范畴内,相反属于类属性。 很多方面,如:JAVA存在基本数据类型、包装类型,基本数据类型不属于面向对象的范畴。
再来看下scala的设计思想class、object。实现了同样的功能,也做到了纯粹面向对象的特征。