首页 > 学院 > 开发设计 > 正文

面向对象三大特征之继承(extends)——Java笔记(六)

2019-11-14 21:07:42
字体:
来源:转载
供稿:网友
面向对象三大特征之继承(extends)——java笔记(六)继承: 从一般到特殊的关系,是一种拓展关系,子类对象是父类的一种,也可称为”is a“的关系泛化: 把子类里的共性抽取到父类里的来的过程特化: 子类在父类的基础上上定义了自己特有的行为特征的过程格式: 修饰符 class SubClass extends SuperClass{ }SubClass:导出类、继承类、子类SuperClass:父类、基类、超类、源类子类SubClass通过extends来继承父类SuperClass继承是通过extends来实现的继承提高了代码的复用性,提高了软件的开发效率让类与类之间产生关系,这个是实现多态的前提子类对象访问实例成员的时候,是现在子类里找,要是找不到再去父类找每个类有且只有一个直接父类一个类没有显示的继承其他的一个类时候,默认的直接父类就是object类一旦一个类显示的继承了其他的一个类的时候,此时默认的直接父类object就会被取消Java只支持单继承不支持多继承父类里面私有的东西,子类不能继承在继承操作中,对于子类的对象实例化,子类对象在实例化之前必须首先调用父类中的构造方法之后在调用自身的构造方法子 证明:
 1 class Super{ 2  public Super(){ 3   System.out.PRintln("我是父类super"); 4  } 5 } 6 class Sub extends Super{ 7  public Sub(){ 8   System.out.println("我是子类sub"); 9  }10 }11 public class InstanceDemo {12  public static void main(String[] args) {13   new Sub();14   /**15    * 我是父类super16    * 我是子类sub17    *18    * 先打印的是父类里面的在打印的子类里面19    * 从这个可以看出是先调用父类的构造方法创建父类对象再来调用子类里面的构造方法20    *21    */22  }23 }
子类对象在初始化之前会默认调用父类无参的构造方法,但是一旦子类显示的调用了父类其他的构造方法,那么默认调用的构造方法将会被取消方法的重写(Override): 当父类的某个方法不适合于子类本身的特征行为时就当重写父类中应当改变的方法方法重写应遵循的原则: 方法签名(方法名+参数列表)必须相同 子类方法的返回值类型比父类方法的返回值类型更小或相等 子类方法声明抛出的异常应比父类方法申明跑出异常更小或相等,即子类方法不能抛出新的异常类型,子类方法可以同时声明抛出多个父类方法声明抛出异常的子类(RuntimeException例外) 子类方法的访问权限应比父类方法更大或相等overload 与 override

区别点重载(overload)重写(override)
1 判断规则 参数列表顺序不同、类型不同、个数不同都可以构成重载 同类中方法名相同,但是方法的参数列表不同,与方法的返回值类型和修饰符无关 方法签名(方法名+参数列表)必须相同 子类方法的返回值类型比父类方法的返回值类型更小或相等 子类方法声明抛出的异常应比父类方法申明跑出异常更小或相等 子类方法的访问权限应比父类方法更大或相等
2权限无权限要求被重写的方法不能拥有比父类更严格的权限
3范围发生在一个类中发生在继承关系中
4多态编译时多态运行时多态
构造方法不能被重写super关键字 表示父类对象的默认引用 如果子类要调用父类被覆盖的实例方法,可用super作为调用者调用父类被覆盖的实例方法 使用super调用父类方法 使用super调用父类的构造方法对super的调用必须是构造器中的第一个语句this不能出现在static修饰的方法中,super也一样不能出现在static修饰的方法中因为static修饰的方法属于类,即调用者是类 this与super
区 别 thissuper
1 使 用调用本类中的字段或方法从子类调用调用父类的字段或方法
2构 造可以调用本类中的构造方法,且有一个构造方法要作为出口从子类调用父类的构造方法,不管子类如何安排最终一定会去调用,默认调用的父类中无参的构造方法
3要 求调用自身构造方法时放在构造方法首行调用父类构造方法时放在子类构造方法首行
4特 殊表示当前对象表示父类对象
ps:使用super()和this()在同一个构造方法中是不可能同时显示出现的


上一篇:Freemarker工具类

下一篇:java异常机制

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表