美文网首页java学习
NO.12 重写、访问控制、static和final

NO.12 重写、访问控制、static和final

作者: smallnumber | 来源:发表于2017-07-13 22:23 被阅读0次

    方法的重写:

    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方法设置参数,调用传参也可实现。

    相关文章

      网友评论

        本文标题:NO.12 重写、访问控制、static和final

        本文链接:https://www.haomeiwen.com/subject/crughxtx.html