1、关键字:extend
2、要点:
(1)子类是extend父类出来的
(2)子类回继承符类所有public类型的实例变量和方法,但不会继承父类所有private类型的实例变量和方法
(3)继承的方法可以被覆盖,但是实例的变量不可以被覆盖
(4)is-a关系是单方向的
(5)当调用对象引用的方法时,回调用到与该对象最接近的方法,即最低阶会胜出
(6)父类的引用可以只想子类对象,但子类的引用不能指向父类对象,除非强制转换类型。
(7)继承的层次一般不超过一层或两层
(8)用final和static关键修饰的类不可以被继承
(9)Java中类的继承只能是单继承
(10)子类调用父类的方法可以用super关键字来引用,但是父类不能调用和重写子类特有的方法
3、意义
(1)避免了重复的程序代码
(2)定义出共同的协议
二、多态 1、方法重写(overwrite)一个类继承自某个父类时,对父类中的方法进行改写。
(1)参数必须要一致,且返回类型要兼容(即子类必须要声明返回一样的类型或该类型的子类)
(2)不能降低方法的存取权限:
例如父类方法时public修饰的,子类的方法不能用private修饰
2、方法重载(overload)重载是两个方法的名称相同,但参数不同,重载与多态没有关系
(1)返回类型可以不同
(2)不能只改变返回类型
(3)可以更改存取权限
3、抽象类1、关键字:abstract
2、抽象类除了被继承之外,是没有用途、没有值、没有目的的。
3、抽象类是不能被初始化的
注意:为什么要引进不能被初始化的抽象类?
因为有些类被实例化后没有具体意义,例如Animal类,实例化后在现实世界中并没有具体的事物与之对应,因为动物有很多种,各种动物都有不同的特征。
4、抽象的方法:
(1)具体类中不能有抽象的方法(即抽象的方法只存在于抽象类中)
(2)抽象类中可以有抽象的方法和非抽象的方法
(3)一个具体类若是继承自某个抽象类,必须实现父类中的所有抽象方法
编译器是根据引用类型来判断哪些method可以调用,而不是根据引用所只想的确实的类型。
4、接口(Interface)(1)关键词:Interface
(2)实现接口:implement
(3)接口中的方法都是抽象的
(4)一个类可以实现多个接口
(5)实现某个接口的类必须实现它所有的方法,这些方法都是public和abstract的
5、要点(1)如果不想某个类被初始化,则用abstract这个关键字将其标记为抽象的
(2)抽象的类可以有抽象的和非抽象的方法
(3)如果类带有抽象的方法,则此类必定标识为抽象的
(4)抽象的方法没有具体的内容,它的声明是以分号结束
(5)抽象的方法必须在具体的类中实现和运行
(6)java中的所有类都是Object(java.lang.Object)直接或间接地子类
(7)无论实际上引用地对象是什么类型,引用变量只能调用该引用变量对应地类型中地方法,而不是其所引用地对象中所有方法。
(8)实现某个接口的类必须实现它所有的方法,这些方法都是public和abstract
的
(9)Object引用变量在没有进行类型转换的情况下不能赋值给其他类型
(10)若在堆上的对象类型与所要转换的类型不兼容,则此转换会在执行期间产生异常(即相关的两个类之间不能进行类型转换)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)