1 类的继承
被继承的类b称为父类,相应的类a称为子类。
一个父类可以同时拥有多个子类,一个子类只能有一个直接的父类。
语法:
[类修饰符] class 子类名 extends 父类名
{类体}
2 方法的覆盖
有事继承下来的方法不符合要求,这是就可以使用覆盖技术(override)解决这个问题。
覆盖就是在子类中对需要覆盖的成员用与父类中相同的格式,再重新定义声明一次,以实现对继承下来的成员方法进行功能的重新实现。
方法覆盖一定是方法名、参数列表都相同,如果参数列表不同就不是覆盖(就变成了重载)。
this关键词代表的是当前对象
如果要使用父类被覆盖的方法或被隐藏的变量,可以使用super关键词:
super.成员变量----访问父对象被隐藏的成员变量。
super.成员方法([参数列表])----访问父对象的被覆盖的成员方法。
super([成员列表])----访问父对象的构造方法,只能出现在子类的构造方法的第一行。
3 方法的多态性
可以将子类赋值给父类:
a(父类) = new b(子类)([参数列表])
然后就可以调用子类和父类都有的方法,或子类继承的方法。
如果要调用父类不存在的方法可以将父类强制转换成子类:
((b)a).方法();
在强制类型转换时有可能引起程序的严重错误,为了避免这种错误,转换前最好使用instanceof运算符进行类型判断。他的作用是判断一个对象是不是某个类的实例,是返回true,否则返回false:
if(a instanceof b)
((b)a).方法();
4 继承中的封装性
protected 关键字----其子类可以访问,其他类具有包内访问的权限。
5 抽象类
抽象类是子类某些共同特性或相似功能的抽象,这些抽象无法完全描述每个子类的特性,因此某些抽象出来的方法没有办法编写方法体,这种没有方法体的方法被称为抽象方法且带有抽象方法的类必须被定义为抽象类。
使用abstract关键字修饰的方法就是抽象方法,修饰的类就是抽象类。
6 final修饰符
如果一个类使用了final修饰符,那么这个类不可能有子类,这样的类被称为最终类。
增强了程序的健壮性和稳定性。
final关键字不仅能修饰类还可以修饰方法和属性。
被final关键字修饰的方法是不能被覆盖的方法。
final修饰属性有两种方法:
1 与static关键字同时使用,这时的属性是不可改变的常量。常量通常也同时使用public关键字(常量标识符所有字母大写,不同单词用下划线分隔)。
例:Math类中定义的常量”public static final double PI=3.1415926535798932;“
2 单独用final关键字修饰成员变量,这时变量不设定初始值,被称为空白final类型,必须在构造方法中为其赋初值。
final与abstrac(要求必须被继承)不能同时修饰同一个类或方法,这两个修饰符相互矛盾。
7 Object类
Object类是java中所有类的根类,Java语言规定所有类都是由Object直接(没有使用extends关键字)或间接派生出来的。
1 protected viod finalize()方法
用于释放储存空间。
2 public String toString()方法
3 public boolea equals(Object obj)方法
用于判断某个对象与当前对象是否相等----判断的是引用地址。