第一章 继承

语法

修饰符 子类 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同时修饰一个方法或类

S2_OOP第二章的更多相关文章

  1. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  2. 《Django By Example》第二章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译完第一章后,发现翻译第二章的速 ...

  3. Jenkins入门系列之——02第二章 Jenkins安装与配置

    2014-12-08:已不再担任SCM和CI的职位,Jenkins的文章如无必要不会再维护. 写的我想吐血,累死了. 网页看着不爽的,自己去下载PDF.有问题请留言! Jenkins入门系列之——03 ...

  4. Python黑帽编程 2.0 第二章概述

    Python黑帽编程 2.0 第二章概述 于 20世纪80年代末,Guido van Rossum发明了Python,初衷据说是为了打发圣诞节的无趣,1991年首次发布,是ABC语言的继承,同时也是一 ...

  5. 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型

    第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...

  6. Asp.Net MVC4 + Oracle + EasyUI 学习 第二章

    Asp.Net MVC4 + Oracle + EasyUI 第二章 --使用Ajax提升网站性能 本文链接:http://www.cnblogs.com/likeli/p/4236723.html ...

  7. 数据结构与算法分析C++表述第二章编程题

    把昨天看的第二章巩固一下,做一做编程习题. 2.6: 第一天交2元罚金,以后每一天都是前一天的平方,第N天罚金将是多少? 这个题目和2.4.4-3介绍的幂运算基本一致.若按相同的递归思路分析,比那个问 ...

  8. 【vue.js权威指南】读书笔记(第二章)

    [第2章:数据绑定] 何为数据绑定?答曰:数据绑定就是将数据和视图相关联,当数据发生变化的时候,可以自动的来更新视图. 数据绑定的语法主要分为以下几个部分: 文本插值:文本插值可以说是最基本的形式了. ...

  9. Java语言程序设计(基础篇)第二章

    第二章 基本程序设计 2.2 编写简单的程序 1.变量名尽量选择描述性的名字(descriptive name). 2.实数(即带小数点的数字)在计算机中使用一种浮点的方法来表示.因此,实数也称为浮点 ...

随机推荐

  1. java中的抛出异常throws与throw

    throws与throw throws是方法可能抛出异常的声明.(用在声明方法时,表示该方法可能要抛出异常)语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{.. ...

  2. servlet中doPost()和doGet()

    转载至 http://blog.163.com/grandry_it_bird/blog/static/1751633362010102615553610/ 一般来说我们是用不到doGet方法的,do ...

  3. 使用Docker搭建简易的 Java Web 环境

    ![group_5622_0](http://ow20g4tgj.bkt.clouddn.com/2017-09-10-group_5622_0.png) 从[<从最简单的入手学习 Docker ...

  4. Opencv入门-第一回-梦牵机器视觉翼,初识Opencv域(安装Opencv)

    各位看官,您是不是瞅着Opencv进来的?(你这不是废话吗>_>) 这Opencv(开源计算机视觉库)啊,说来话长,最初是上个世纪末(1999年)由Intel建立起来的.近十多年人工智能这 ...

  5. BGP基础【第三部】

    静态路由的优点:安全稳定.缺点:配置繁琐不灵活.动态路由的优缺点则反之. BGP边界网关路由协议 路径向量(rip是距离矢量) 到达目的网段所要经过的所有as BGP选路不看度量值而参考13种路径属性 ...

  6. 转:【Java集合源码剖析】TreeMap源码剖析

    前言 本文不打算延续前几篇的风格(对所有的源码加入注释),因为要理解透TreeMap的所有源码,对博主来说,确实需要耗费大量的时间和经历,目前看来不大可能有这么多时间的投入,故这里意在通过于阅读源码对 ...

  7. 微信小程序swiper标签的测试

    swiper属性(具体看官方文档): 一:testswiper.wxml的代码如下.testswiper.js自动生成示例代码. //testswiper.wxml <view > < ...

  8. 201521123091 《Java程序设计》第3周学习总结

    Java 第三周总结 第三周的作业. Java 第三周总结 1.本章学习总结 2.Java Q&A 1.代码阅读 2.构造函数有什么用?其编写格式是什么?如果一个类不写构造函数,它有构造函数吗 ...

  9. 201521123007《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题目4-1) private static ...

  10. 201521123039 《java程序设计》第三周学习总结

    1.本周学习总结 2.书面作业 (1)代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; pu ...