多态
1.Java引用类型变量有两种类型:一种是编译时的类型,一种是运行时的类型;
2.编译的类型是由声明变量的时候决定的,运行时类型由实际赋给该变量的对象决定。
3. 如果运行时的类型和编译时的类型不一致就会出现所谓的多态。
多态是基于继承和重写才产生的
- 1.首先编译时类型和运行时类型是一种父类和子类的关系。
- 2.多态最常用的场景就是子类重写父类的方法后,如果引用变量的类型为父类,而对象为子类,如果引用类型调用重写方法,会去执行子类定义的实现。
instanceof运算符
- instance运算符的前一个操作数一般是引用数据类型变量,后一个操作数是类名(接口),它是用于判断前面的对象是否是后面的类、或者其子类。如果是的话,返回true。
- instanceof运算符一般用于在我们对引用数据类型进行强制类型转换之前判断使用。避免在实际的运行过程中出现 ClassCastException;
final修饰符
final 可以修饰在类、成员变量、方法
- 如果修饰类:则该类不会被继承(一般在开发中很少使用);
- 如果修饰成员变量:一旦给成员变量赋值后就不允许修改其值,一般用在对常量的定义中。
- 如果修饰方法:该方法不能被重写
- 在实际的开发中, final 用的最多的场景是结合 static 关键字定义类变量,即静态变量。定义为 final 另一个意图就是将变量的值保护起来。
包装类
基础类型 | 包装类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
包装类中一般会提供两种构造器用于构建对象
- 使用基本数据类型的参数;
使用字符串类型的参数:对于此类参数,在实际创建对象的时候要注意输入的值要满足条件;
int y = 10;
Integer yi = new Integer(y);
Integer yi2 = y;int y3 = yi.intValue(); boolean b = false; Boolean bi = new Boolean(b); Boolean bi2 = b; boolean bi3 = bi2.booleanValue();
抽象类 - abstract
抽象类的特点
- 如果在一个类中定义了抽象方法,那么这个类就是抽象类;
- 抽象类是无法实例化的,只能作为父类被继承使用;
- 抽象类的构造器只能用于被实现的子类的构造器调用。
抽象类注意点
- abstract 是不能修饰成员变量的;
- 如果方法定义为 static,就不能使用 abstract 修饰符;
- 如果方法定义为 private ,也不能使用 abstract 修饰符;
抽象类的作用
抽象类是一种模板式的设计思想,抽象类是多个子类的通用模板,子类在抽象类的基础上进行扩充,但是子类整体上会保留抽象类的行为方法(子类必须要实现抽象类的抽象方法否则会报错)。
抽象类一般只是定义需要使用的方法,把不能实现的部分抽象成抽象方法,留给子类去实现。
父类中可以有实现的方法,但是子类也是可以对已经实现的方法进行改造(override)但是如果在子类中还需要调用父类的实现方法,可以使用 super 关键字
————————————–结束——————————————————–