类的继承
基本思想就是基于某个父类的扩展,制定一个新的子类,子类可以继承原有的属性和方法,也可以增加父类不具备的属性和方法,也可以直接重写父类中的某些方法,
重写就是在子类中将父类的成员方法的名称保留,重写成员方法的实现内容,更改成员方法的存储权限,或是修改成员方法的返回值类型。
重构是一种特殊的重写方法,子类与父类的成员方法返回值、方法名称、参数类型和个数完全相同,唯一不同的是方法实现内容。
Object类
java中的类都来源于java.lang.Object类,也就是说所有的类都是Object的子类。
Object类中的getClass()、notify()、notifyAll()、wait()等方法不能被重写
Object类中的clone()、finalize()、equals()、toString()方法可以被重写
getClass()方法
getClass()方法是Object定义的方法,他会返回对象执行时的Class实例,然后使用此实例调用getName()方法可以取得类的名称。
getClass().getName();
toString()方法
toString()方法的功能就是将一个对象返回为字符串形式,然后会返回一个String实例。
对象类型的转换
向上转型
把子类对象赋值给父类类型的变量,这种技术称为向上转型。
向下转型
将较抽象的类转化为较具体的类
使用instanceof操作符判断对象类型
如果程序在执行向下转型操作时,如果父类对象不是子类对象的实例,就会发生ClassCastException异常,所以在执行向下转型操作时,应该先判断父类对象是否为子类对象的实例,这个判断由instanceof操作符来完成,语法格式如下
myobject instanceof ExampleClass
//myobject为某类的对象引用,ExampleClass为某个类
使用instanceof操作符的表达式返回值为布尔值,如果myobject对象是ExampleClass的实例对象,则返回true,如果myobject对象不是ExampleClass的实例对象,则返回false
class Quadrangle{
public static void draw(Quadrangle q) {
}
}
class Square extends Quadrangle{
//SomeSentence
}
class Anything{
//somesentence
}
public class Parallelogram {
public static void main(String[] args) {
Quadrangle q=new Quadrangle();
if(q instanceof Parallelogram){ //向下转型操作
Parallelogram parallelogram=(Parallelogram) q;
}
if (q instanceof Square){
Square s=(Square) q; //进行向下转型操作
}
}
}
方法重载
方法重载就是在同一类中允许同时存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可。
参数类型不同,构成重构 参数顺序不同,构成重构 参数个数不同,构成重构
编辑器是利用方法名、方法各参数类型和参数的个数以及参数的顺序来确定类中的方法是否唯一
抽象类和接口
abstract关键字是定义抽象类的关键,使用abstract关键字创作的类称为抽象类,使用abstract关键字创作的方法称为抽象方法,只要类中有一个抽象方法,就可以称这个类是抽象类。继承抽象类后必须要实现抽象类中所有的抽象方法。
接口就是一个纯粹的抽象类,接口中的所有方法都没有方法体,接口使用关interface关键字进行定义,一个类实现一个接口可以使用implements关键字。
在接口中,定义的方法必须被定义为public或abstract形式,其他修饰权限不被java编译器认可。
在Java中不允许多重继承,但使用接口就可以实现多重继承,因为一个类可以实现多个接口,语法如下
class 类名 implements 接口1,接口2,接口3