Java学习笔记(五)
多态性
多态性是面向对象中最为重要的概念,在Java中有两种体现
- 方法的overload和overwrite
- 对象的多态性:Java引用变量有两个类型:编译时类型和运行时类型、编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给变量的对象决定,若编译时和运行时不一致,则称之为多态(Polymorphism)
-
向上转型(upcasting):父类类型的引用可以指向子类的对象,但此时不能访问子类添加的属性和方法,但父类转化为子类必须通过强制类型转换
-
成员方法如果在实际对象中有,则实际调用实际对象类中的重写方法,称为动态绑定
-
instance of
x instance of A检验x是否为类A或者其子类的对象
Object类
Object是所有Java类的根父类,如果类的声明中未使用extends,则默认继承Object类。当 一个方法不确定传进来的类时,可以将这个方法的形参可以定义为Object类。
Object类中的主要方法有:
- public boolean equals(Object obj):一般情况下比较两个引用类型是否指向同一个对象,当为File、String、Date以及包装类时,比较的是类型以及内容(原因是这些类中都重写了equals方法)
- public int hashCode()
- public String toString()
String对象的创建
在堆中有一个字符串常量池, 根据上图可知三种创建方式如下:
- 字面量创建String对象,此时只在常量池中创建一个对象
- 通过new创建,常量池有对象,堆中也有对象
可以看出,字面量方式创建要更省内存