一、继承

1、简单说明

  • 子类可以拥有父类中除了私有变量/函数外的所有的内容,当出现x是y的一种什么的时候可以使用继承,x继承于y,x是y的儿子,x子类是对y父类的扩展。
  • 反映的是一种特殊关系,如动物->哺乳动物->蓝鲸
  • 关键字 extends: 只支持单继承(一个继承另一个),不支持多继承(c#同样不允许,c++却允许)。
  • 作用:简化代码,提高代码重用率。

2、继承练习
(1)动物类(爷爷类)

public class Test04_Animal{public String name = "蓝鲸";public int age = 23;
}

(2)哺乳动物类(父亲类)

public class Test04_Mammal extends Test04_Animal{  //继承动物类public int size = 50;  //多加了一个变量
}

(3)蓝鲸类(儿子类)

public class Test04_Whale extends Test04_Mammal{  //继承哺乳类//定义一个说话的方法public void speek(){System.out.println("我是" + this.age + "大" + this.size + "米长的" + this.name);}  //父类中的公有变量也可以使用this进行访问public static void main(String[] args){Test04_Whale tw = new Test04_Whale();  //创建对象tw.speek();  //调用鲸鱼说话的方法}
}

3、继承关系

二、super关键字

1、简单说明
(1)super表示父类中的内容,当父类和子类有同名变量时,使用this是访问子类的,而使用super就是访问父类的public或protected方法。

(2)只能在子类中的构造方法中使用,用于初始化继承自父类的属性,并且需要父类中已经定义了相应签名的构造方法。

(3)可以使用super()调用父类的构造方法,并且只能放在子类构造方法的第一行,且只能调用一次super方法。

2、测试练习
(1)父类

public class Test04_Mammal extends Test04_Animal{  //继承动物类public int size = 50;  //多加了一个变量protected String addr;  //保护变量,子类继承中可以继承保护变量和公有变量//定义父类的构造方法public Test04_Mammal(String addr){this.addr = addr;}
}

(2)子类

public class Test04_Whale extends Test04_Mammal{  //继承哺乳类//定义一个说话的方法public void speek(){System.out.println("我是" + this.age + "大" + this.size + "米长的" + this.name);}  //父类中的公有变量也可以使用this进行访问//定义子类的构造方法public Test04_Whale(){super("太平洋");  //调用父类的构造方法,传入参数System.out.println("我住在" + super.addr);}//定义主方法public static void main(String[] args){Test04_Whale tw = new Test04_Whale();  //创建对象,调用子类构造方法tw.speek();  //调用鲸鱼说话的方法}
}

三、方法的重写

1、简单说明
(1)就是子类对父类中的方法进行重新定义,子类和父类中的方法声明完全一致(毕竟重写肯定是写同一个方法)。

(2)常用于子类对父类的方法不满意,想要更新或者拓展父类的方法。

(3)子类继承的方法的权限,不应比继承自父类的方法更严格(为了保证多态都能实现)。

(4)返回值不能作为重载的条件,因为子类中有了两个同名同参但不同返回值的方法。

2、测试练习
(1)父类

public class Test04_Mammal extends Test04_Animal{  //继承动物类public int size = 50;  //多加了一个变量protected String addr;  //保护变量,子类继承中可以继承保护变量和公有变量//定义父类的构造方法public Test04_Mammal(String addr){this.addr = addr;}//父类中定义一个说话的方法public void speek(){System.out.println("我是" + this.age + "大" + this.size + "米长的" + this.name);}
}

(2)子类

public class Test04_Whale extends Test04_Mammal{  //继承哺乳类//定义子类的构造方法public Test04_Whale(){super("太平洋");  //调用父类的构造方法,传入参数}//定义对父类的speek方法的重写:半盖法public void speek(){//但重写时又调用了一次父类的speek方法,这样就可以不用担心父类的方法丢失了(半盖法)super.speek();  //此外,重写时又添加了一条地址语句的输出System.out.println("I am in " + super.addr);  }//定义主方法public static void main(String[] args){Test04_Whale tw = new Test04_Whale();  //创建对象,调用子类构造方法tw.speek();  //调用鲸鱼说话的方法}
}

Java面向对象之继承、super关键字、方法重写相关推荐

  1. Java面向对象之继承和多态

    1.代码块 (1)关于代码块的概述:用{}括起来的代码,统称为代码; (2) 根据其位置以及声明不同:分为以下       1) 局部代码块: 在main()里面,给变量限定它的生命周期 public ...

  2. java底层原理书籍_阿里面试题:Java中this和super关键字的底层实现原理

    知道的越多,不知道的就越多,业余的像一棵小草! 编辑:业余草 来源:https://www.xttblog.com/?p=5028 B 站:业余草 最近一个粉丝加我说,接到了阿里的面试,问问我阿里会面 ...

  3. [转载] JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍

    参考链接: 可以重写Java中的私有方法吗 JAVA面向对象之代码块与继承 代码块分类 局部代码块 作用:限制变量生命周期 书写位置:在方法中 构造代码块 开发中很少使用 书写位置:类中  方法外 调 ...

  4. Java面向对象之继承,方法重写,super关键字,员工类系列继承题

    在程序中,如果想声明一个类继承另一个类,需要使用extends关键字. 格式: class 子类 extends 父类 {} 继承的好处 1.继承的出现提高了代码的复用性,提高软件开发效率. 2.继承 ...

  5. Java面向对象 继承,super,方法重写

    /* 继承:表示父类跟子类之间的关系当两个类或者多个类具备相同的属性和方法的时候,可以提取出来,变成父类,子类可以继承子类跟父类是is-a的关系使用:1.使用继承的时候需要使用extend关键字2.使 ...

  6. JAVA面向对象OOP→继承extends、构造方法super、方法重写override、样例代码

    继承(extends扩展) 一个子类只有一个父类,单一继承,可以在不同包内,不同包要导入import 基类(Object)如果一个类不继承任何类,默认就自动继承Object类 子类可以对父类的属性不用 ...

  7. Java笔记013-IDEA、包、访问修饰符、封装、继承、多态、Super、方法重写/覆盖(override)、java的动态绑定机制

    目录 面向对象编程(中级部分) IDE(集成开发环境)-IDEA IDEA介绍 IDE(集成开发环境)-Eclipse Eclipse介绍 IDEA的安装 IDEA的基本介绍和使用 创建一个java项 ...

  8. 面向对象1---this、构造方法、方法重载,静态,权限、getter和sett、继承、super、方法重写、多态

    面向对象 1.类与对象 面向对象: 类:就是图纸 属性:这一类的共同属性 动作方法:这一类事务共同能执行的功能 对象使用类创建的某一个东西 对象能干什么,完全于类是如何定义的 写代码 类要使用clas ...

  9. Java面向对象(继承、抽象类)

    面向对象 今日内容介绍 u 继承 u 抽象类 第1章 继承 1.1 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成 ...

最新文章

  1. pytorch forward_pytorch使用hook打印中间特征图、计算网络算力等
  2. C++primer第八章 IO库 8.1 IO类
  3. Wireshark 3.0.0 正式版发布,免费开源的网络数据包分析软件
  4. DataUml Design 介绍11 - DataUML 1.5版本功能-支持无Oracle客户端
  5. kafka中处理超大消息的一些考虑
  6. 汶川地震《生死不离》歌词
  7. 【Hive】Hive分区表
  8. Python基础学习5 -字符串
  9. pyhon爬虫—爬取原创力文档(全面解析)
  10. 极简工具(AutoCAD、Tekla)——零件图自动标注
  11. 浅析智慧消防巡检系统在高速公路隧道的应用
  12. c语言零基础自学软件下载,C语言入门学习下载-C语言入门学习app下载v1.0-52PK下载中心...
  13. win10系统如何设置局域网服务器,小编解决win10系统设置局域网的解决方法
  14. html中加大p的距离,html中P标签段落与CSS段落间距距离调整
  15. EasyNVR纯H5摄像机直播解决方案前端解析之:RTSP安防监控实时直播的四分屏的前端展示方案
  16. Go基础(幕客网视频学习笔记)
  17. Grandpa's Estate (凸包)
  18. mtcnn系列-2.数据集讲解
  19. 初中计算机竞赛面试题目及答案,教资面试历年考试题目,试讲+答辩,附解析!【初中信息技术】...
  20. 多商户商城系统功能拆解42讲-平台端应用-客服列表

热门文章

  1. elementUI table 表格表头居中 颜色、内容居左
  2. c语言设计阶段作业答案,C语言程序设计阶段考试练习题(答案)
  3. 中兴如何远程服务器时间同步,中兴通讯时间同步解决方案
  4. vs2017运行yolov4_YOLOv4 C vs2017 编译
  5. php 图片文件转base64编码格式,php如何将图片转为base64编码格式
  6. python print 分隔符_python print 使用分隔符 或行尾符
  7. pythonpandas设置索引_pandas DataFrame的修改方法(值、列、索引)
  8. android studio一个页面等待3秒跳转_Flutter 对 iOS、Android(双端开发者)的快速理解(二)
  9. c语言atm实训报告总体框架图,实训报告-ATM.doc
  10. c语言制作图片软件,大佬们,小菜鸟想问一问用vc编译器做简易画图软件