一、 包(Package)
1.作用:管理类、避免命名冲突、控制访问范围
2.命名规则:小写字母 + 点号(如 com.公司名.项目名)
3.包说明:
Java 风格:单文件单包,包名与路径无关
嵌套风格:源文件中嵌套声明包层级
4.包对象:定义共享成员(属性 / 方法),供包内所有类使用
5.导包方式:
Import导入、局部导入、通配符导入(import _)、重命名导入(import A => B)、屏蔽类(import A => _, _)
二、类与对象
1.类定义:看成一个模版,无 public 修饰符,默认公有
支持多类共同存于一个源文件
2.属性:
var可变,val只读
Bean 属性(@BeanProperty)自动生成 getter/setter
3.方法:
定义语法:def 方法名(参数)[: 返回类型] = {方法体}
4.访问权限
private:私有权限,类内部及伴生对象可见
protected:受保护权限,同类、子类可见(同包不可见)
private[包名]:指定包内可见
5.创建对象
Val/var对象名[:类型] = new 类型()
自动推导变量类型不能多态,所以多态需要显示声明
6. 构造器
主构造器:类定义时的参数列表
辅助构造器:通过 this 声明,可以有多个,必须调用主构造器
参数修饰符:
无修饰符:局部变量
var:类属性(可变)
val:类属性(只读)
三、封装
抽象出的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作
默认行为:属性自动生成 getter,var 生成 setter
Java 兼容性:使用 @BeanProperty 生成标准 getter/setter
四、 继承与多态
class 子类名 extends 父类名 { 类 体 }
子类继承父类的属性和方法,父类构造器->子类构造器
scala 是单继承
重写:
方法 / 属性需加 override。
动态绑定(属性和方法均动态绑定)
父类调用:super.方法名()
重写: