面向对象的三大特征:封装、继承、多态
1、封装
属性封装数据,方法封装代码。使代码简单易于维护。
2、继承
继承是面向对象最显著的一个特征。继承是派生从已有的类中出新的类,新的类吸收已有的方法和属性,并拓展新的能力。
用extends来表示继承。
例如: class A extends B{} 就说明A是B的子类,A继承了B所有的属性和方法。
单继承性:一个类只能有一个父类。
3、方法的覆盖跟重载
3.1、方法的覆盖
子类可以修改从父类继承的方法。也就是说子类可以创建一个与父类中有相同名称、相同返回值类型和相同的参数列表。(参数列表的变量名可以变)
例如:
class A{ public void method(int a,int b){ 方法体} }
class B extends A{ public void method (int a,int b){ 不同的方法体 } }
B中的method方法覆盖(重写)了A中的method方法。
注:访问权限不允许缩小。抛出异常的范围不能多于父类。
3.2、方法的重载
在同一个类中如果出现了名称相同,但参数列表(个数,类型,顺序)不同的情况叫重载。
例如:
class A{
int a,int b){ 。。。}
double a,double b){ 。。。}
}
规则:方法名称必须相同,参数列表必须不同;(不包含变量名不同)
方法的返回值类型可以相同也可以不同。只有返回类型不同不构成重载。
4、super关键字
关键字super可被用来引用该类的父类的成员变量和方法。
功能:点取父类中被子类隐藏了的数据成员。
点取已经覆盖了的方法。
作为方法名,表示父类的构造方法
5、多态性
什么是多态:多态是同一个行为具有多个不同表现形式或形态的能力。比如键盘的w键,在不同的游戏中,对应的效果也不同。可能是前进,可能是释放技能。
多态存在的必要条件:继承,重写,父类引用指向子类对象。Person p=new Child();
父类是否存在此方法,如果不存在则报错,如果存在再去调用子类的重写方法。使程序具有良好的拓展,可以对所有类的对象进行通用处理。(简单地说就是父接子类,调用的是重写子类方法。new谁调用谁的方法。)
instanceof运算符:用来判断对象所引用的类型是否为指定类型。
通过判断对象的引用类型,将对象进行强制转换。使对象能够调用子方法中父类没有的方法。体现同一个行为的不同形态。比如狗子有个看门的方法,但是并不是所有动物都有。将动物的类型转换为狗子就可以调用看门的方法。
6、static静态
static修饰符能够和属性、方法、内部类一起使用,表示静态。
同一个类中,静态只能访问静态。
静态变量:
存放在静态区中。一个类中的的一个static变量只有一个内存空间,这个变量时共享的。可以有多个实例,但内存空间只有一个。可以通过实例和类名直接调用。局部变量不能用static修饰。
当类被装载的时候无论是否调用static变量,static变量都会被初始化。
静态方法:
静态方法不能调用类中的非静态变量,只能访问静态方法,静态变量。静态方法中不存在this、super。
构造方法不能被静态修饰。
7、final常量
在Java中声明类、方法、属性、局部变量时,可使用关键字final来修饰。
final标记的类不能被继承
final标记的方法不能被重写(覆盖)
final标记的类不能被修改