一、何为继承?(对原有类的扩充)

继承让我们更加容易实现类的扩展。 比如,我们定义了人类,再定义Boy类就只需要扩展人类即可。实现了代码的重用,不用再重新发明轮子(don’t  reinvent  wheels)。

从英文字面意思理解,extends的意思是“扩展”。子类是父类的扩展。现实世界中的继承无处不在。比如:

上图中,哺乳动物继承了动物。意味着,动物的特性,哺乳动物都有;在我们编程中,如果新定义一个Student类,发现已经有Person类包含了我们需要的属性和方法,那么

Student类只需要继承Person类即可拥有Person类的属性和方法。

【注】

1.父类也称作超类、基类 。子类叫派生类

2.Java中只有单继承,没有像C++那样的多继承。多继承会引起混乱,使得继承链过于复杂,系统难于维护。

3.Java中类只有单继承,接口可以多继承。

4.子类继承父类,可以得到父类的全部属性和方法 (除了父类的构造方法),但不见得可以直接访问(比如,父类私有的属性和方法)。

5.如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object。

代码示例:

 1 // 测试继承                                      快捷键    ctrl+/ 单行注释      alt+/ 代码提示(syout main)    ctrl+shift+o 导入其它包的类
 2 package com.lk.oo;      //                                 Ctrl+ shift+L 全部快捷键    ctrl +D 删除单行代码
 3 class Person {
 4     int id;
 5     String name;
 6     public void rest(){
 7         System.out.println("休息一会");
 8     }
 9 }
10
11 class Student extends Person{
12     String major;
13     public  Student(int id,String name,String major){
14         this.id=id;
15         this.name=name;
16         this.major=major;
17     }
18     public void study(){
19         System.out.println("我在学习高数");
20     }
21 }
22
23 public class TestExtends {
24     public static void main(String args[]){
25         Student stu1=new Student(101,"李白","汉语言文学");
26         stu1.rest(); //调用父类Person的rest() 方法
27         System.out.println("id="+stu1.id+",名字:"+stu1.name+",专业:"+stu1.major);
28         //instanceof是二元运算符,左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true;否则,返回false
29         System.out.println(stu1 instanceof Student);
30         System.out.println(stu1 instanceof Person);
31         System.out.println(stu1 instanceof Object);  //显然stu1 属于Student类-->Person类-->Object类(继承关系)以上三个均会返回true
32
33         System.out.println(new Person() instanceof Student); //新建一个Person类的对象,显然他不是Student 这个类的对象
36
37     }
38
39 }

二、方法的重写(Override)

子类通过重写父类的方法,可以用自身的行为替换父类的行为。方法的重写是实现多态的必要条件。

【注意】   1、 方法名、形参列表相同。

2、.返回值类型和声明异常类型,子类小于等于父类。

3、 访问权限,子类大于等于父类。

代码示例:

 1 package com.lk.oo;
 2 //方法的重写
 3 class Vehicle{
 4     public void run(){
 5         System.out.print("跑起来");
 6     }
 7
 8 }
 9 class Horse extends Vehicle{
10     public void run() { //重写父类的方法
11         System.out.println("哒哒哒。。。。");
12
13     }
14
15 }
16 public class TestOverride {
17     public static void main(String arg[]) {
18         Horse horse1=new Horse();
19         horse1.run();
20     }
21
22
23
24 }

转载于:https://www.cnblogs.com/ID-qingxin/p/10041491.html

[18/11/29] 继承(extends)和方法的重写(override,不是重载)相关推荐

  1. java的知识点11——面向对象的三大特征之一继承、instanceof 运算符、方法的重写override、Object类基本特性、toString方法

    面向对象的三大特征:继承.封装.多态 继承的实现 继承让我们更加容易实现类的扩展.子类是父类的扩展 使用extends实现继承 package cn.sxt;public class Test {pu ...

  2. C# 虚方法(virtual)覆盖(override) - 隐藏(new) - 重载

    C# 虚方法(virtual)覆盖(override) - 隐藏(new) - 重载 using System; using System.Collections.Generic; using Sys ...

  3. C# 继承实现父类方法、重写、重载

    继承是派生类(子类)去实现(重写<override>.重构<new>)基类(父类)的方法或属性.从而获取在派生类中要实现的功能. 子类调用父类构造方法,在父类中有个实现姓名和年 ...

  4. Java面向对象(9)--方法的重写(override/overwrite)

    在子类中可以根据需要对从父类中继承来的方法进行改造,也称为方法的重置.覆盖.在程序执行时,子类的方法将覆盖父类中同名同参数列表的方法. 权限修饰符 返回值类型 方法名(形参列表) throws 异常类 ...

  5. java之面向对象:继承extends、super、覆盖override的用法

    继承的好处: 1 )提高了代码的复用性. 2 )让类与类之间产生了关系,给第三个特征多态提供 了前提. java支持单继承,不直接支持多继承,但对C++中的多继承机制进行改良. 单继承:一个子类只能有 ...

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

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

  7. Python中类-继承和方法的重写

    什么是继承 继承就是让类与类之间产生父子关系,子类可以拥有父类的静态属性和方法 继承就是可以获取到另一个类中的静态属性和普通方法(并非所有成员) 在python中,新建的类可以继承一个或多个父类,父类 ...

  8. java之方法的重写

    方法的重写: 1.在子类中可以根据需要对从基类中继承来的方法进行重写. 2.重写的方法和被重写的方法必须具有相同方法名称.参数列表和返回类型. 3.重写方法不能使用比被重写的方法更严格的访问权限. 程 ...

  9. 【java基础面向对象】方法的重写、 package和import包、访问控制修饰符,static,final,static final,抽象方法

    目录 1. 方法的重写(override/overriding):重新写.覆盖 2. package和import: 3. 访问控制修饰符:-----------------------保护数据的安全 ...

最新文章

  1. 2022-2028年中国UTM市场投资分析及前景预测报告
  2. 一文读懂 Spring的前世今生
  3. 深度学习(二十六)——VAE
  4. transfer = C only read dynamically - why it fails to work
  5. POJ2352-Stars【树状数组】
  6. docker desktop ubuntu镜像_原创 | Docker入门,看了不理解,假一赔命
  7. 统一编址 独立编址 寻址空间
  8. 语音识别学习日志 2019-7-17 语音识别基础知识准备6 {维特比算法(Viterbi Algorithm)}
  9. Redis-集合(Set)基础
  10. ORA-00600:[kclchkinteg_2]及[kjmsm_epc]内部错误一例
  11. 苹果确认部分iPad Air 3会出现永久性黑屏:可免费维修
  12. MongoDB-概述:跨平台的面向文档的高性能高可用性易扩展数据库
  13. Linux下安装和卸载jdk及环境配置
  14. ArcGIS pro 发布地图服务(一)动态地图服务
  15. 校园网账号在路由器上登陆
  16. 韩国研发AI武器遭抵制,武器自带“头脑”将多可怕
  17. 西门子安装未找到ssf文件_三菱、西门子软件安装常见出错解决方法「技成周报40期」...
  18. c4droid入门教程 2021.2.6更新
  19. 懂计算机word的博主,2010 word 如何新建目录
  20. 九月读后感《从小工到专家》

热门文章

  1. FIle类常用工具方法整理(持续更新)
  2. 终于明白上一篇的一顿误操作是什么了,是$,不是S !!!!!
  3. Java关键字介绍之this与super
  4. (C/C++) 算法,编程题
  5. c++ sort 从大到小排序_C语言必学的12个排序算法:堆排序(第7篇)
  6. polycube--基于ebpf/xdp的网络套件(网桥,路由器,nat,负载平衡器,防火墙,DDoS缓解器)
  7. scala基础之对象
  8. select poll epoll
  9. c语言考博真题,中国科学院2015年考博英语真题及答案
  10. python3调用adb命令_Python操作adb命令