关于多态和接口,并没有学的很深,还只是作为一个泛泛而谈,希望大佬指教。
有关多态,就会涉及到继承,涉及到继承中,子父类中的方法。常见的多态往往就是,类名1 对象名 = new 类名2();在其中 类名2可以是类名1本身也可以是他的子类。
在生活中,我们日常能看见多态,家里要吃饭时 我们就需要去买“菜”这个菜就很多样,肉,鱼,虾,青菜,白菜等等都可以称为菜,那我们买菜就是一个多态现象,对于肉而言,他属于菜,但是他也有自己独特的特性,就像娃娃菜富水,猪肉富油,牛肉富蛋白质,这都是子类的一个特性,此时,我们假设有一个菜类,一个娃娃菜类,一个猪肉类,一个牛肉类,在父类中,他们共有一个health()方法,娃娃菜的特有就是补充维生素,猪肉补充脂肪,牛肉补充蛋白质,那此时可以看的出来,多态必须基于方法的重写,需要子类对父类的公有方法进行自己独特的重写,多态不是一种特殊的方法,只是一个特殊的特征,就是同一个对象 在不同时刻有不同的形态。
在多态中,通常是由父类名 对象名 = new 指向的子类名,来决定定义一个指向哪个子类的对象,这个对象就可以执行那个子类的重写方法,要注意是独特的重写的方法,不是子类的特有方法,对于子类的特有方法,由父类名new的对象,必须要经过向下转型也就是(子类名)对象名.来调用特殊的方法。
上一篇中,我们讲过了一些有关抽象类的内容,知道了有关抽象我们通常使用abstract来修饰,被这个修饰符修饰的方法,我们称为抽象方法,这个修饰符修饰的类,我们称为抽象类,接口是个特殊的抽象类,对于java而言我们往往会遗憾于只能单继承,此时,接口就出来了,接口实现了多继承,到了接口的时候,我们就不用class来创建了,而使用interface,接口不同于抽象类的地方是,接口中必须全部都是抽象方法,而抽象类里可以有普通方法,我们普通类继承抽象类的时候,不需要重写所有方法,但是实现接口的时候我们就需要重写所有的抽象方法。
我们继承用的关键字是extends,但是实现接口的时候,使用implements来实现,一个类可以实现多个接口,中间用","隔开。
抽象类中可能包含非final的变量,接口是不可以实例化的,但是可以被实现类实现,所以我们可以在接口中定义不能在接口中实现的一些抽象方法,在实现类中实现。
异常处理包含了五个关键字,捕获异常try catch fianlly,抛出异常throw throws,在try catch finally中,catch和finally都是可以省略的,但是不可能同时略,finally是程序中必然会执行的代码块,若果遇到return,会在return之前先执行finally代码块,再return。catch时,异常的顺序必须按从小到大排列,不可以从大到小,因为catch是按顺序查找执行,如果有大的在前面,他就不往后查找了。
对于抛出而言,就是throws和throw的区别,throws是写在方法名后的,可以写多个异常,在调用方法时报错,throw只能有一个异常,且写在方法体里,在方法写出来的时候就报错