方法的重写:
1)发生在父子类中,方法签名(名称、参数列表)相同,方法体不同
2)重写方法调用看对象的类型,也就是new出来的类型
重写与重载的区别:
重写(Override)是发生在父子类中,方法名称相同,参数列表相同,方法体不同;遵循"运行期"绑定,根据对象的类型来调用方法。
重载(Overload)是发生在一个类中,方法名称相同,参数列表不同,方法体不同;遵循"编译期"绑定,根据参数(引用)的类型来绑定方法。
package:作用是避免类的命名冲突,其有层次结构,类的全称为----包名.类名。
同包的类不能同名,但是不同包的类是可以同名的,另外建议包名所有字母都小写。
import:作用是导入不同包的类,使一个类能访问其他包的类。(当然,也可以使用类的全称来访问)。
访问控制修饰符:
public:公共的,任何类
private:私有的,本类
protected:受保护的,本类、子类、同包类
默认(不写):本类、同包类
类中的访问修饰采用以上四种都可以。
static:静态的
1)静态变量(static修饰):属于类,存储在方法区中,只有一份;常通过类名点来访问;用于所有对象所共享的数据(图片、音频、视频等)。
2)静态方法(static修饰):属于类,存储在方法区中,只有一份;常通过类名点来访问;静态方法中没有隐式的this传递,静态方法不能直接访问实例成员;用于方法的操作仅与参数相关而与对象无关。
3)静态块(static修饰):属于类的,在类被加载期间自动执行的,因为类只被加载一次,所以静态块也只执行一次;用与加载/初始化静态资源(图片、音频、视频等)。
final:最终的、不可改变的
1)修饰变量:变量不能被改变
2)修饰方法:方法不能被重写
3)修饰类:类不能被继承
static final:static final 修饰的成员变量称为常量,必须声明同时初始化,并且不可被改变。常量建议所有字母大写,多个单词用_分隔。编译器在编译时将常量直接替换为具体的值,效率高。
现在对之前俄罗斯方块每个图形类,有一个新的要求,在调用print方法打印图形四个格子的坐标时,输出“I am a X”。例如:打印T类中cells四个坐标的时候,要求输出“I am a T”。(之前print定义在父类Tetromino中)
我们可以通过在子类重写print方法来实现:
主方法测试代码:
运行结果:
通过重写方法成功满足要求,当然在父类的print方法设置参数,调用传参也可实现。