---------------------- android培训、java培训、期待与您交流! -------------------
extends 继承:
1、提高了代码的复用性。
2、让类与类之间有了关系,这样才有了多态的特性。
java语言中:java只支持单继承(接口除外,接口之间支持多继承),不支持多继承。java支持多层继承。
因为多继承容易带来安全隐患,当父类中定义了相同功能,但功能内容不同时,子类对象不确定要运行哪一个。对多继承进行改良变为多实现,因为接口中的方法都是抽象的,需要被覆写,调用的都是被子类覆写后的方法,所以不会出现子类对象不确定要运行哪一个的情况。
this代表本类对象的引用。
super代表父类对象的引用。
子类中出现非私有的同名变量,this代表子类对象引用,super代表父类。
覆盖、重写:子类与父类中有相同的函数时,运行子类的函数。用于程序的扩展。
1、子类覆盖父类,必须保证子类权限大于父类。(父类中权限是private的话,子类不能覆写)
2、静态只能覆盖静态。
函数重载与覆写的区别:
重载:重载只看同名函数的参数列表,不同则为重载。
覆写:子父类方法名要一模一样,包括返回值类型,内容不一样。
异常在子父类覆盖中的体现:
1、子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。
2、如果父类的方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
3、如果父类或者接口的方法中没有异常抛出,那么子类在覆盖该方法时,也不可以抛出异常。如果子类方法发生了异常,就必须要进行try处理,绝对不能抛。
子类的所有构造函数默认都会访问父类中空参数的构造函数。因为子类每一个构造函数内的第一行都有一句隐式super();当父类中没有空参数构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数。因为父类中的数据子类可以直接获取,所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的,所以子类在对象初始化时要先访问一下父类中的构造函数。如果类不想被继承,那可以用final来修饰类;同样的如果类中的某个方法不想被子类覆写,也可以使用final来修饰该方法。
---------------------- android培训、java培训、期待与您交流! -------------------