1.为什么要有类的继承性?(继承性的好处)

  • ① 减少了代码的冗余,提高了代码的复用性
  • ② 便于功能的扩展
  • ③ 为之后多态性的使用,提供了前提
    图示:

2.继承性的格式:

class A extends B{}

  • A:子类、派生类、subclass
  • B:父类、超类、基类、superclass

3.子类继承父类以后有哪些不同?

3.1体现:一旦子类A继承父类B以后,子类A中就获取了父类B中声明的所有的属性和方法。

  • 特别的,父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私的结构。只因为封装性的影响,使得子类不能直接调用父类的结构而已。
    3.2 子类继承父类以后,还可以声明自己特有的属性或方法:实现功能的拓展。
  • 子类和父类的关系,不同于子集和集合的关系。
  • extends:延展、扩展

4.Java中继承性的说明

1.一个类可以被多个子类继承。
2.Java中类的单继承性:一个类只能有一个父类
3.子父类是相对的概念。
4.子类直接继承的父类,称为:直接父类。间接继承的父类称为:间接父类
5.子类继承父类以后,就获取了直接父类以及所间接父类中声明的属性和方法

图示:

5.java.lang.Object类的理解

  1. 如果我们没显式的声明一个类的父类的话,则此类继承于java.lang.Object类
  2. 所的java类(除java.lang.Object类之外都直接或间接的继承于java.lang.Object类
  3. 意味着,所的java类具有java.lang.Object类声明的功能。

1.什么是方法的重写(override 或 overwrite)?

子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作.

2. 应用:

重写以后,当创建子类对象以后,通过子类对象调用子父类中的同名同参数的

方法时,实际执行的是子类重写父类的方法。 3.举例:

class Circle{
public double findArea(){}//求面积
}
class Cylinder extends Circle{
public double findArea(){}//求表面积
}


class Account{
public boolean withdraw(double amt){}
}
class CheckAccount extends Account{
public boolean withdraw(double amt){}
}

4.重写的规则:

方法的声明: 权限修饰符  返回值类型  方法名(形参列表) throws 异常的类型{
  •                 //方法体
    
  •              }
    
  •  约定俗称:子类中的叫重写的方法,父类中的叫被重写的方法
    
  •  ① 子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同
    
  •     ② 子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符
    
  •      >特殊情况:子类不能重写父类中声明为private权限的方法
    
  •     ③ 返回值类型:
    
  •      >父类被重写的方法的返回值类型是void,则子类重写的方法的返回值类型只能是void
    
  •      >父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类或A类的子类
    
  •      >父类被重写的方法的返回值类型是基本数据类型(比如:double),则子类重写的方法的返回值类型必须是相同的基本数据类型(必须也是double)
    
  •  ④ 子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型(具体放到异常处理时候讲)
    

  • 子类和父类中的同名同参数的方法要么都声明为非static的(考虑重写,要么都声明为static的(不是重写)。

5.面试题:

区分方法的重写和重载?
答:
① 二者的概念:
② 重载和重写的具体规则
③ 重载:不表现为多态性。
重写:表现为多态性。
重载,是指允许存在多个同名方法,而这些方法的参数不同。编译器根据方法不同的参数表,对同名方法的名称做修饰。对于编译器而言,这些同名方法就成了不同的方法。它们的调用地址在编译期就绑定了。Java的重载是可以包括父类和子类的,即子类可以重载父类的同名不同参数的方法。
所以:对于重载而言,在方法调用之前,编译器就已经确定了所要调用的方法,这称为“早绑定”或“静态绑定”;

而对于多态,只等到方法调用的那一刻,解释运行器才会确定所要调用的具体方法,这称为“晚绑定”或“动态绑定”。

引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚绑定,它就不是多态。”

1.super 关键字可以理解为:父类的

2.可以用来调用的结构:

属性、方法、构造器

3.super调用属性、方法:

3.1 我们可以在子类的方法或构造器中。通过使用"super.属性"或"super.方法"的方式,显式的调用父类中声明的属性或方法。但是,通常情况下,我们习惯省略"super."
3.2 特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,则必须显式的使用"super.属性"的方式,表明调用的是父类中声明的属性。
3.3 特殊情况:当子类重写了父类中的方法以后,我们想在子类的方法中调用父类中被重写的方法时,则必须显式的使用"super.方法"的方式,表明调用的是父类中被重写的方法。

4.super调用构造器:

4.1 我们可以在子类的构造器中显式的使用"super(形参列表)"的方式,调用父类中声明的指定的构造器
4.2 "super(形参列表)"的使用,必须声明在子类构造器的首行!
4.3 我们在类的构造器中,针对于"this(形参列表)"或"super(形参列表)“只能二一,不能同时出现
4.4 在构造器的首行,没显式的声明"this(形参列表)“或"super(形参列表)”,则默认调用的是父类中空参的构造器:super()
4.5 在类的多个构造器中,至少一个类的构造器中使用了"super(形参列表)”,调用父类中的构造器

1.从结果上看:继承性

子类继承父类以后,就获取了父类中声明的属性或方法。
创建子类的对象,在堆空间中,就会加载所父类中声明的属性。

2.从过程上看:

当我们通过子类的构造器创建子类对象时,我们一定会直接或间接的调用其父类的构造器,进而调用父类的父类的构造器,…直到调用了java.lang.Object类中空参的构造器为止。正因为加载过所的父类的结构,所以才可以看到内存中父类中的结构,子类对象才可以考虑进行调用。

图示:

3.强调说明:

虽然创建子类对象时,调用了父类的构造器,但是自始至终就创建过一个对象,即为new的子类对象。

java面向对象的特征二:继承性 —(14)相关推荐

  1. 面向对象的特征二 继承性

    有相同的属性和方法都可以提取出来, 就形成了一个公共的部分,公共的部分形成一个类,其他类有一样的属性和方法的时候 不用在自己类里面在写出来,直接就公共的类中调用即可. 总结,造一个公共类,里面的属性和 ...

  2. JAVA学习--面向对象的特征二:继承性

    * 一.面向对象的特征二:继承性 * 1.为什么要设计继承性?  *  * 2.通过"class A extends B"类实现类的继承.  *   子类:A  父类(或基类 Su ...

  3. Java面向对象三大特征---继承

    系列文章目录 Java面向对象三大特征-多态 Java面向对象三大特征-封装 文章目录 系列文章目录 前言 一.概念 二.举例说明 三.语句格式 三.为何要使用继承 四.super与this关键字 五 ...

  4. java面向对象基本特征_Java 面向对象的基本特征

    前言: 在刚开始接触Java的时候,那时候面对Java面向对象的几大特征一直理解的不是很理解,借着空闲时间在这里整理一下,同时在加深一下印象. 一.封装: Java面向对象的特征之封装,所谓的封装就是 ...

  5. JAVA面向对象三大特征:

    JAVA面向对象三大特征: 1.封装 (英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的 ...

  6. Java面向对象三大特征:封装、继承、多态

    一.封装   封装这个词听起来好象是将什么东西包裹起来不要别人看见一样,就好象是把东西装进箱子里面,这样别人就不知道箱子里面装的是什么东西了.其实 JAVA 中的封装这个概念也就和这个是差不多的意思. ...

  7. java面向对象的特征 —(13)

    面向对象的特征一:封装与隐藏 1.为什么要引入封装性? 我们程序设计追求"高内聚,低耦合". 高内聚 :类的内部数据操作细节自己完成,不允许外部干涉: 低耦合 :仅对外暴露少量的方 ...

  8. java面向对象三大特征及五大原则

    java面向对象 一.java面向对象的三大特征 1.封装(Encapsulation) 封转是指属性私有化 根据需要提供setter和getter方法来访问属性 隐藏具体属性和实现细节,仅对外开放接 ...

  9. java面向对象的特征封装_Java总结-Java面向对象的基本特征之一:封装性

    作者:nyist-tc-岑国玉 来源:牛客网 Java面向对象的基本特征之一:封装性 封装性: 1.封装性的目的:保护某些属性和方法不被外部所看见. //这里说一下自己学linux时老师教我这个封装类 ...

最新文章

  1. 把Illustrator矢量图转化为代码:Drawscript
  2. LibreOJ β Round #2
  3. [原]iOS中 Web 页面与 Native Code 的一种通信方式
  4. saltstack的基础入门文档
  5. 数据库MySQL基础---事务相关特性--连接池DBCP--C3P0--JavaBean--DBUtils工具
  6. Spring@Schedule定时任务源码解析
  7. C++复数运算 重载
  8. 《网管员必读——网络基础》(第2版)电子课件下载
  9. 【Vegas原创】imp/exp导入导出数据
  10. ado显示,删除后刷新重新显示
  11. 【SpringMVC学习05】SpringMVC中的参数绑定总结——较乱后期准备加入 同一篇幅他人的参数绑定...
  12. 天朝四大不正经社交软件 第一名“亮了”
  13. ipv6 华为交换机 路由配置_华为交换机 01-08 IPv6 DNS配置
  14. VScode Remote SSH连接失败
  15. ultraISO方式制作win10安装U盘
  16. 南京信息工程大学计算机考研资料汇总
  17. 使用ImageMagick将eps批量导出为透明png图片
  18. 100个 ChatGPT 提示(Prompt)优化高质量提问案例
  19. 用c语音打一个简单的a+b
  20. linux键盘触摸板失灵,linux 中屏幕合上后触摸板无法使用

热门文章

  1. Cache--主存地址映射
  2. About 4B/5B
  3. Pycharm如何选择自动打开最近项目
  4. graph-easy 纯文本图绘制工具(表格或流程图)
  5. 2018年广东年销售额超千亿的企业有哪些?
  6. Troubleshooting OpenStack Bug- 每天5分钟玩转 OpenStack(162)
  7. 保护Eclipse RCP应用的商业Java编译器
  8. “全裸”:看向京的雕塑艺术展
  9. FPGA设计的基础流程
  10. 系统业务逻辑书籍_「樊登读书会强推:免费送10本绝密书」彻底改变你的逻辑思维能力...