第一章 继承

语法

修饰符 子类 extends 父类{

//类定义不封

}

使用extends继承父类的属性和方法、使用super关键字调用父类的方法。

概念

继承是面向对象的三大特特之一,Java只支持单继承。继承表达 is a 的关系。

在Java中,所有的Java类都直接或间接的地继承了Java.lang.object类,所有类都是Object的子类

关于修饰符可否被子类继承

继承public和protected修饰的属性和方法,不管同不同包。

继承默认权限修饰符的属性和方法,只有在同包

无法继承private修饰的属性和方法

无法继承父类的构造函数

访问修饰符

本地

同包

子类

其他

Private

 

默认

   

Protected

     

Public

       

重写和继承关系中的构造函数

子类重写父类方法

概念

在子类中根据需求对父类继承的方法进行重新编写,称为方法的重写或方法的覆盖。

方法重写的要求

  1. 重写方法和被重写方法必须具有相同的方法名
  2. 重写方法和被重写方法必须具有相同的参数列表(否则为方法重载)
  3. 重写方法和被重写方法必须返回值类型必须相同,或者是其子类(重写方法中的返回值类型是被重写方法返回值类型的子类)
  4. 重写方法不能缩小被重写方法的访问权限(可见性高于或等于被重写方法的可见性,被重写方法的修饰符不能为private,否则不能被继承)
  5. Super必须出现再子类(子类的方法或构造函数)中,不能再其他位置
  6. 可以访问父类成员(可被继承的)
  7. 访问父类构造函数必须在子类构造函数的第一条语句
  8. 子类没有通过super显示调用父类的有参构造函数,也没有通过this显示调用自身的其他构造函数,则系统默认先调用父类的无参构造函数。
  9. 子类构造方法中没有使用super显示调用父类的有参构造函数,则执行父类相应的构造方法,不执行父类的无参构造方法
  10. 子类的构造方法中通过this显示调用自身的构造函数,则在相应的构造方法中应用以上两条规则
  11. 存在多级继承关系,在创建子类对象时,以上规则会多次向更高一次父类应用。一直到执行顶级父类object类的无参构造函数为止
  12. 通过abstract关键字修饰
  13. 抽象类不能被实例化。抽象类可以没有、有一个、多个或者全部都是抽象方法
  14. 抽象方法没有方法体,只有方法声明。抽象方法必须被子类继承,否则该子类也为抽象类
  15. 用fianl修饰类,该类不能被继承
  16. 用fianl修饰方法,该方法不能被重写
  17. 用fianl修饰变量(成员或者局部变量)都称为常量,只能赋值一次

Super代表对当前对象的直接父类对象的默认引用

继承条件下构造函数被调用的规则

抽象类

抽象类和抽象方法

抽象类和抽象方法的特点

Fianl修饰符

Abstract修饰符

Abstract不能和private同时修饰一个方法

Abstract不能和static同时修饰一个方法

Abstract不能和final同时修饰一个方法或类

最新文章

  1. 操作系统IO模型
  2. ADT通过svn进行团队开发,svn插件不好使的解决方案
  3. ASP.NET 尖括号 百分号 井号 等号 的用法
  4. MVC怎么在同一个action返回两个表的数据
  5. ecshop获取浏览器各个版本
  6. 大学二三事——那些人(1)
  7. ArcGIS制图表达Representation实战篇4-自由式制图表达
  8. Python:学会创建并调用函数
  9. JAVA继承:编译与运行的关系(编译看左边,运行看右边)
  10. .6-Vue源码之AST(2)
  11. RabbitMQ的应用场景以及基本原理介绍
  12. ssh 报error: kex protocol error: type 30 seq 1
  13. Linux远程登录ssh免密码配置方法(仅供参考)
  14. transform:rotate3d/tranlate3d
  15. mongoose的关联查询 :populate
  16. 深入理解JVM(五)JVM优化策略
  17. ArrayList源码分析笔记(jdk1.8)
  18. java多线程找素数实例
  19. 【51nod】1655 染色问题
  20. 一个不错的在线的js调试器

热门文章

  1. html:table属性cellpadding
  2. 使用Composer安装ThinkPHP5
  3. vue echarts 遇到的bug之一 无法渲染的问题
  4. ORACLE SEQUENCE的简单介绍
  5. Vuex 最简单的数量增减实例
  6. 《Java程序设计》终极不改版
  7. KVM虚拟化主机安装
  8. 201521123091 《Java程序设计》第2周学习总结
  9. 【Alpha阶段】第三次scrum meeting
  10. 201521123002《Java程序设计》第12周学习总结