多态
多态即为事物存在的多种形态
多态存在的前提
- 要有继承关系
- 要有方法的重写
- 父类引用指向子类对象
多态中的成员访问特点
- 成员变量:编译看左边(父类),运行看左边(父类)
- 成员方法:编译看左边(父类),运行看右边(子类)
- 静态方法:编译看左边(父类),运行看左边(父类)
多态中的向上转型和向下转型
向下转型:Person p = new SuperMan();
(新建子类对象时,父类引用指向子类对象)
向上转型:SuperMan sm = (SuperMan)p;
(子类对象强制转换向父类)
多态的利弊
好处:提高了代码的维护性和扩展性,可以当作形参接收任意子类对象
弊端:不能使用子类的特有属性和行为
object类
所有类都直接或间接继承object类(构造器为public object())
- hashCode()方法
public int hashCode():返回该对象的哈希码值 - getClass()方法
public final Class getClass():返回此object的运行时类。可以通过class类中的一个方法获取对象的真实类的全名称。- toString()方法
public String toString()用于返回该对象的字符串表示 - equals()方法
指示其他某个对象是否与此对象的引用相等,返回值为Boolean类型,为了防止出现空指针错误,通常拿一个确定值与另一个不确定的对象作比较。
- toString()方法
包package
为了解决类名冲突,分类存放字节码文件,引入包的概念。
包的定义格式
package加包名,多级包名用“.”隔开即可
package语句在一个Java文件中只能有一个,而且必须是程序第一条可执行代码
import关键字
不同包下的类要进行访问,要先进行导包,即用到import关键字
导包格式为import 包名
Java中三个顶级元素
package包、import导包关键字、class类
如果要给一个类定义归属包,使用package关键字,此关键字必须在文件的最开始位置。
如果该类需要引入其他类,使用import关键字,此关键字必须在包定义之后(如果存在),而且必须在类定义之前。
定义一个类,需要用到关键字 class。归属包的定义和其他类的引入,都必须出现在类定义之前
修饰符
权限修饰符:private、final、protected、public
状态修饰符:static、final
抽象修饰符:abstract
以下是类及其组成常用到的修饰符:
- 类:
- 权限修饰符:默认修饰符,public
- 状态修饰符:final
- 抽象修饰符:abstract
- 用的最多的就是:public
-:成员变量: - 权限修饰符:private,默认的,protected,public
- 状态修饰符:static,final
- 用的最多的就是:private
- 构造方法:
- 权限修饰符:private,默认的,protected,public
- 用的最多的就是:public
- 成员方法:
- 权限修饰符:private,默认的,protected,public
- 状态修饰符:static,final
- 抽象修饰符:abstract
- 用的最多的就是:public
- 除此以外的组合规则:
- 成员变量:public static final
- 成员方法:
- public static
- public abstract
- public final
可以看出public关键字使用范围是最大的,private最小。
- public static
基本类型包装类
将基本数据类型封装成对象的好处在于可以在对象定义中定义更多的功能方法操作该数据
常用的操作就是用于基本数据类型与字符串之间的转换
基本数据类型及其对应的包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
Integer类
Integer类在对象中包装了一个基本类型为int的值,提供了多个方法,能在int和String类型之间进行转换,还提供了处理int类型时非常有用的其他一些常量和方法
构造方法如下:
- public Integer(int value)
- public Integer(String s)
JDK5的新特性自动装箱和自动拆箱
自动装箱:把基本数据类型转换为包装类类型
自动拆箱:把包装类类型转换为基本数据类型
- Integer ii = 100;
- ii += 200;
先判断1是否为null,再使用新特性以防空指针报错
String和int类型之间的转换
int ---->String
- 用" "进行拼接
- public static String valueOf(int i)
- int – Integer – String(Integer类的toString方法())
- public static String toString(int i)(Integer类的静态方法)
String---->int - String – Integer – int
- public static int parse Int(String s)