类(calss)
属性 (属性:可以理解为游戏中人物属性)
成员变量(属于类,在堆中; 随类而存在; 可不初始化。)
局部变量(属于方法,在栈中; 随方法而存在; 必需初始化。)
方法 (行为:可以理解为游戏中人物技能)
构造方法 (常用于初始化属性、另外一种:SetXxx();): 当类中所有方法为静态时,需要把构造方法私有化,以防止其他类创建此类的对象。
成员方法
匿名对象
- 匿名对象 : 作用,对于只用一次的对象(例如初始赋值),可节省空间(因调用完,就是垃圾,可回收)
A a = new A;
print(a); //非匿名
print(new A);//匿名对象
面向对象
封装(encapsulation)
- 隐藏对象属性和实现细节,仅有公共访问方式。
- 好处: a. 隐藏属性和细节; b. 复用性; c. 安全性.
- 常用方式: private (限制修饰的变量或方法,只能在本类中使用)
继承 ( inheritance )
- 关键字 extends
- 好处:
提高代码复用性;
提高代码维护性;
多态的前提,类与类的联系。 - 坏处
耦合性增加了。 - 特点
单继承,多层继承。 - Note
1.子类只能继承父类的非私有成员;
2.子类不继承父类的构造方法,但可以能过super关键字去访问;
3.继承应该是包含的关系,而不是为了部分功能而继承。 - 继承中构造方法的关系
子类的所有构造方法默认访问父类空参数的构造方法。
(PS: 若父类中没有无参构造方法,子类用super/this 解决,并且super(...) or this(...) 必须在第一行)。 - 方法重写
1.不能降低方法权限;
2.静态方法只能是静态方法;
3.无法重写私有方法(废话,都没继承,怎么重写!)。
多态 ( polymorphism )
- 好处
1.提高代码维护性 ;
2.提高代码拓展性; - 坏处
1.需要向下转型才能调用子类非重写的方法。 - 父类引用指向子类对象(向上转型中的一种)
1.该引用只能调用父类有定义的方法或变量;
2.若子类重写方法,该引用调用的就是子类重写的方法;
3.向上转型中的重写只能针对方法; - 向下转型
代码块
- 代码块 : 局部代码块、构造代码块、静态代码块、同步代码块。
执行顺序请看构造函数 非静态代码块 构造函数的执行顺序