辅助功能——final关键字+对象的多态性

来源:互联网 发布:女王级战列舰 知乎 编辑:程序博客网 时间:2024/06/06 07:51

final关键字

在JAVA之中final称为终结器,在java中可以使用final定义类、方法以及属性

1、 使用final定义的类不能再有子类(太监类):一般在进行一些系统类(如String)的时候会使用final,进行一些架构代码的开发也会用到final,但是若只是一个使用者(自己开发的类,没有用到第三方框架),很少会见到final类;

2、  使用final定义的方法不能被子类所覆写:有时由于父类中的某些方法具备某些隐藏的特性,并且子类必须使用此方法操作可以加上final,意思就是说子类不能去破坏这个方法的重要功能;

       !!先final再写返回值,因为返回值和方法名称一定是连在一起写的!!

3、  使用final定义的变量就成了常量,常量必须在定义的时候设置好内容并且不能修改,这样就可以利用一些变量名称来描述一些数值;为了让程序中的常量与变量进行有效的区分,常量名称都要用大写字母表示,特别说的是全局常量:public static final  ** ****,这样声明的就是全局常量。static的数据保存在公共数据 区,所以此处的常量就是一个公共常量。

总结:

1、以后一旦发现final定义的类或方法时一定不要继承或覆写;

2、public static final  ** ****,这样声明的就是全局常量,全局常量每一个字母都要求大写



多态性(基础)

多态性依赖于方法的覆写,多态性有两种描述形式:

·  方法的多态性:①方法的重载:同一个方法名称,根据传入的参数的类型及个数的不同执行不同的方法体;

      ②方法的覆写:同一个方法根据子类的不同实现不同的功能。

·  对象的多态性:发生在继承关系类之中,子类和父类之间的转换问题

          ①向上转型(自动完成):父类  父类对象 = 子类实例;     //看new的是哪一个子类,看调用的方法是否被子类所覆写

          ②向下转型(强制完成):子类  子类对象 = (子类)父类实例;

意义:

· 向上转型:由于所有的子类对象实例都可以自动地向上转型,所以向上转型意义在于参数的统一上。 参数统一之后还可以调用子类覆写后的方法体,即同一个方法针对不同的子类可以有不同的实现;

· 向下转型:父类调用子类自己特殊的方法,所以的父类发生向上转型之后只能够看见父类自己定义的全部方法信息,但是看不见子类特殊的方法,于是此时就需要使用向下转型,将父类对象转换为子类对象就可以使用子类特殊的功能了。


对于对象的转型,有以下经验总结:

  |-  80%的情况下都只会使用向上转型,因为可以得到参数类型的统一,方便与程序设计(子类定义的方法大部分情况下以父类的方法名称为标准进行覆写)

  |-  5%的情况下会使用向下转型,目的在于调用子类的特殊方法;

  |-  15%情况是不转型的,例如:String。(个性化的操作在一个标准的操作中应该尽量少出现,因为对象转型的操作有强制性,会有安全隐患。)


java中的异常:ClassCastException:类转换异常,指的是两个没有关系的类对象强制发生向下转型时所带来的异常常,可见向下转型会有风险。

为了保证转型的顺利进行,在java中提供了一个关键字:instanceof   对象  instanceof  类   

返回的是boolean型,如果对象是某个类的实例则返回true,否则返回false。

发生向上转型后,子类和父类便有了联系,当子类对象实例化时父类对象一定是存在的。对于向下转型在发生之前,一定要先发生对象的向上转型,以建立关系才可发生向下转型。

子类尽量不要过多的扩充与父类无关的操作方法(也有特殊情况),90%情况下子类的方法要与父类的方法功能保持一致。


课时87





0 0
原创粉丝点击