[18/11/29] 继承(extends)和方法的重写(override,不是重载)
一、何为继承?(对原有类的扩充)
继承让我们更加容易实现类的扩展。 比如,我们定义了人类,再定义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,不是重载)相关推荐
- java的知识点11——面向对象的三大特征之一继承、instanceof 运算符、方法的重写override、Object类基本特性、toString方法
面向对象的三大特征:继承.封装.多态 继承的实现 继承让我们更加容易实现类的扩展.子类是父类的扩展 使用extends实现继承 package cn.sxt;public class Test {pu ...
- C# 虚方法(virtual)覆盖(override) - 隐藏(new) - 重载
C# 虚方法(virtual)覆盖(override) - 隐藏(new) - 重载 using System; using System.Collections.Generic; using Sys ...
- C# 继承实现父类方法、重写、重载
继承是派生类(子类)去实现(重写<override>.重构<new>)基类(父类)的方法或属性.从而获取在派生类中要实现的功能. 子类调用父类构造方法,在父类中有个实现姓名和年 ...
- Java面向对象(9)--方法的重写(override/overwrite)
在子类中可以根据需要对从父类中继承来的方法进行改造,也称为方法的重置.覆盖.在程序执行时,子类的方法将覆盖父类中同名同参数列表的方法. 权限修饰符 返回值类型 方法名(形参列表) throws 异常类 ...
- java之面向对象:继承extends、super、覆盖override的用法
继承的好处: 1 )提高了代码的复用性. 2 )让类与类之间产生了关系,给第三个特征多态提供 了前提. java支持单继承,不直接支持多继承,但对C++中的多继承机制进行改良. 单继承:一个子类只能有 ...
- [转载] JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍
参考链接: 可以重写Java中的私有方法吗 JAVA面向对象之代码块与继承 代码块分类 局部代码块 作用:限制变量生命周期 书写位置:在方法中 构造代码块 开发中很少使用 书写位置:类中 方法外 调 ...
- Python中类-继承和方法的重写
什么是继承 继承就是让类与类之间产生父子关系,子类可以拥有父类的静态属性和方法 继承就是可以获取到另一个类中的静态属性和普通方法(并非所有成员) 在python中,新建的类可以继承一个或多个父类,父类 ...
- java之方法的重写
方法的重写: 1.在子类中可以根据需要对从基类中继承来的方法进行重写. 2.重写的方法和被重写的方法必须具有相同方法名称.参数列表和返回类型. 3.重写方法不能使用比被重写的方法更严格的访问权限. 程 ...
- 【java基础面向对象】方法的重写、 package和import包、访问控制修饰符,static,final,static final,抽象方法
目录 1. 方法的重写(override/overriding):重新写.覆盖 2. package和import: 3. 访问控制修饰符:-----------------------保护数据的安全 ...
最新文章
- 2022-2028年中国UTM市场投资分析及前景预测报告
- 一文读懂 Spring的前世今生
- 深度学习(二十六)——VAE
- transfer = C only read dynamically - why it fails to work
- POJ2352-Stars【树状数组】
- docker desktop ubuntu镜像_原创 | Docker入门,看了不理解,假一赔命
- 统一编址 独立编址 寻址空间
- 语音识别学习日志 2019-7-17 语音识别基础知识准备6 {维特比算法(Viterbi Algorithm)}
- Redis-集合(Set)基础
- ORA-00600:[kclchkinteg_2]及[kjmsm_epc]内部错误一例
- 苹果确认部分iPad Air 3会出现永久性黑屏:可免费维修
- MongoDB-概述:跨平台的面向文档的高性能高可用性易扩展数据库
- Linux下安装和卸载jdk及环境配置
- ArcGIS pro 发布地图服务(一)动态地图服务
- 校园网账号在路由器上登陆
- 韩国研发AI武器遭抵制,武器自带“头脑”将多可怕
- 西门子安装未找到ssf文件_三菱、西门子软件安装常见出错解决方法「技成周报40期」...
- c4droid入门教程 2021.2.6更新
- 懂计算机word的博主,2010 word 如何新建目录
- 九月读后感《从小工到专家》
热门文章
- FIle类常用工具方法整理(持续更新)
- 终于明白上一篇的一顿误操作是什么了,是$,不是S !!!!!
- Java关键字介绍之this与super
- (C/C++) 算法,编程题
- c++ sort 从大到小排序_C语言必学的12个排序算法:堆排序(第7篇)
- polycube--基于ebpf/xdp的网络套件(网桥,路由器,nat,负载平衡器,防火墙,DDoS缓解器)
- scala基础之对象
- select poll epoll
- c语言考博真题,中国科学院2015年考博英语真题及答案
- python3调用adb命令_Python操作adb命令