当前位置: 首页 > news >正文

java 值 继承_java中的继承

1

大家在看到继承2个字的时候可能第一想法就是生活中的  子女继承父母的财产,生活中的继承特点是钱不用自己挣  也可以花。 在代码这块2个类之间存在某种联系,建立这种  继承关系,继承不能乱继承,能不能继承一定要符合一种  规矩这个规矩称之为  is a关系  狗  is a 动物   ok  狗  is a 人类   error

cfd6ccb71fe40e267494765cc38f3ab3.png

2

比如说我们玩的《lol》游戏中,所有的人物都属于英雄  应该有一个英雄类,每个英雄又有不同的特征比如有的属性  ADC有的属性AP,每个类型下面还有不同的实现英雄类       英雄类     -----------------------     |                     |      ADC类                                       AP类   ------------------     -------------------   |        |       |     |       |          |      寒冰类      女警类        老鼠类   凤凰类      电耗子类           提莫类    继承是让类与类之间产生关系,继承是实现多态的前提!  a,继承的语法   继承的关键字  extends    定义一个父类   class 父类{      }   定义一个类使该类继承父类,那么该类就是此父类的子类   该子类就自动拥有父类可继承下来的属性和方法。   class 子类  extends 父类{      }      由刚才我们的实验 会发现  ADC类型中并没有定义   name属性和发育的方法,但是在测试的类中会发现   我们的adc引用可以调用name属性和发育方法由此   可以证明,子类在继承父类的时候会自动的拥有父类的   成员(成员变量、成员方法)

dff4173d33b0013fc613b9792744bd96.png

3

b,继承中的成员变量   如果在继承的时候父类与子类都有成员变量如果成员变量的   名字不一样那么好处理,如果成员变量的名字一样该如何处理。      如果成员变量的名字一样 实验得到 他会给子类的成员变量赋值   但是有的时候 我就需要给父类的成员变量赋值该如何做呢?

29b99de09dae2674bc5d8870a0e31135.png

4

我们可以通过使用一个关键字 super他可以指定父类的属性(在   子类中存在和父类有相同属性名的属性)  c,继承的优缺点与需要注意的地方   优点:    Java继承可以增强代码的复用性。   缺点:    缺点就是类与类之间耦合性变高了。   注意:   重点*****    Java中的继承只支持单继承,不支持多继承    这个和我们的现实生活很吻合,一个孩子只能    有一个爸爸。但是一个父类可以有多个子类。    一个爸爸可以有多个孩子。     一个父类可以有多个子类     一个子类只能有一个父类    但是Java支持多重继承     一个类可以有子类也可以有父类   *****    在Java的类结构中存在一个"祖宗类"该类    是Java中所有类的直接或者间接父类该类的    名字为  java.lang.Object,如果我们在    编写一个类的时候 该类 没人继承任何一个类    那么系统会默认使该类继承Object类。

6061b921c627d0f9bb83ad8766a08771.png

5

d,继承中的成员方法   1.子类成员方法和父类的成员方法名不同时           子类在调用成员方法的时候会先去子类中去找    如果子类没有的再从父类中寻找。      如 我们 的  Hero类和ADC类  在测试类中执行    adc.showName()方法时,他会先在子类中寻找有没有    一个方法的名字为 showName的,如果有则调用,如果没有    他则会去父类中寻找有没有,发育同理showName();    2.特殊情况  子类中的成员方法和父类中的成员方法同名    重写-->重写只发生在父子类中    覆盖    为什么会有重写呢?     父类提供的方法不能够满足子类的要求。    程序在执行的时候肯定会执行重写后的方法。        方法名相同的情况下也会执行子类,如果父类方法有用    可以再执行之前通过super关键字来调用父类的方法做    一些前置的工作。   3.重写的注意事项    子类在重写父类的方法的时候子类的方法名必须要和父类的    方法名保持一致,并且参数列表也要保持一致。而且重写后的    方法访问修饰符的范围不能小于重写前的访问修饰符范围。    private  public    Java中的几个访问修饰的控制范围    公开的>受保护的>默认>私有的    public>protected>默认不写>private     在Java提供了一个验证方法是否是重写的标签    @Override 写在需要验证的方法上面,如果该方法    的确是一个重写的方法,那么就会编译通过,如果该方法    不是重写父类的方法,那么就会编译不通过。                重载和方法的返回值类型有没有关系?     方法的重载只有参数列表有关,和返回值类型无关!!!    重写和方法的返回值类型有没有关系?     有关系     如果返回值类型是基本数据类型那么子类和父类的返回值     类型必须要保持一致          如果返回值类型是引用数据类型那么子类的方法返回值类型     不能大于父类的方法返回值类型。      重写的方法和异常也有关系(讲到异常的时候再说)        重写总结  *****      1.子类方法的修饰符>=父类的方法修饰符      2.子类方法的返回值<=父类的方法返回值(仅限引用类型,基本类型要一致)      3.子类与父类的方法  方法名参数列表必须要一致      4.Java提供了一个验证重写标签@Override      5.子类方法抛出的异常范围不能大于父类方法抛出的异常(异常的时候再演示)        下课 自己编写一个子类一个父类 验证  1234 3.抽象类、抽象方法  引入:   比如说现在我们有一个动物类,还有一个狗类,还有一个猫类   所有的动物都会吃东西,所以我们将狗和猫的吃的方法写到了   动物类里面,然后让 狗 和 猫 继承 动物类。      问题:    猫吃鱼 狗吃肉,你告诉我 动物类里面的吃  到底吃什么?       Animal{    eat{         }   }       Cat extends Animal{       }      Dog extends Animal{    eat(){      吃肉    }   }

0e10ab98b434ab99d5df39553689236b.png

6

a,抽象方法   在我们的实际开发过程中有时候父类中定义的方法我们根本就不知道   如何实现才能匹配所有子类的需求。所以我们将这类不知道怎么去实现   的方法给他定义成抽象方法。   如果一个类包含了抽象方法,那么该类就必须是一个抽象类。   有抽象方法的类一定是抽象类   c,如何定义抽象类和抽象方法   在需要定义的类或方法前面添加一个修饰符   abstract 在类上面添加 那么该类就是抽象类   在方法上面添加 那么该类就是抽象方法  d,抽象类   抽象类中可以没有抽象方法,如果一个抽象类没有抽象方法   我为什么要定义成抽象类?   那么没有抽象方法的抽象类有意义吗?    有意义,意义在于不让别人new他,不要别人创建该对象   抽象类不能new   抽象类存在的意义就是被继承。         如果一个类继承了抽象类,那么该类就必须要实现所有的抽象方法。   如果不实现除非该类也是一个抽象类。

7

今天课程内容总结 1.继承  a,继承的语法格式  使用 extends关键字  b,继承的优缺点  c,继承的成员变量的处理(同名,不同名)  d,继承的成员方法的处理(同名,不同名)  e,方法重写的注意事项(5条) 2.抽象类    a,为什么有抽象方法  b,如何定义抽象类和抽象方法  c,抽象方法与抽象类之间的一些关系   有抽象方法的类一定是抽象类   抽象类中不一定有抽象方法  d,抽象类不能new  e,继承一个抽象类必须要实现抽象类里面的所有抽象方法   如果不实现除非该子类也是一个抽象类。

89728160971f5bb6f0ab253efb05dd2c.png

END

相关文章:

  • java 颜色条_具有多个颜色条的子图
  • java 图片数据管理_Java实现图片内容无损任意角度旋转
  • java流量监控系统demo_搭建一个简单的基于web的网络流量监控可视化系统
  • jquery与java_纯javascript和jquery实现增删改查
  • mysql 批量字段前缀_sqlserver数据库,批量更改表名和字段的前缀 | 学步园
  • pdfpcell 怎么设置单元格大小_PdfPCell的方法隐藏单元格的边框
  • java strace_用strace排查故障的5种简单方法(每日一译)
  • java银行账户系统_用java编的银行账户系统代码
  • java扩展包_CodeRunner 的 Java 扩展 Jar 包支持
  • java session 修改_修改 Servlet 的sessionId
  • qt添加qwt帮助文件_win 7下安装qwt 6.1.0,基于qt 4.8.5
  • java亮眼_一些java处理变量的 让我眼前一亮的
  • 36岁自学python_深入 Python 解释器源码,我终于搞明白了字符串驻留的原理!
  • idea 收费标准_2013年IDEA期限与费用
  • java反射机制学习_java学习之 反射机制
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • centos安装java运行环境jdk+tomcat
  • CSS实用技巧干货
  • flask接收请求并推入栈
  • Java Agent 学习笔记
  • Nodejs和JavaWeb协助开发
  • python大佬养成计划----difflib模块
  • React Native移动开发实战-3-实现页面间的数据传递
  • SQL 难点解决:记录的引用
  • 产品三维模型在线预览
  • 基于组件的设计工作流与界面抽象
  • 简单数学运算程序(不定期更新)
  • 聚类分析——Kmeans
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​linux启动进程的方式
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (12)Linux 常见的三种进程状态
  • (编译到47%失败)to be deleted
  • (差分)胡桃爱原石
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (九)信息融合方式简介
  • (七)理解angular中的module和injector,即依赖注入
  • (一) storm的集群安装与配置
  • **python多态
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .Net IE10 _doPostBack 未定义
  • .NET 药厂业务系统 CPU爆高分析
  • .NET 依赖注入和配置系统
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .NET基础篇——反射的奥妙
  • [<MySQL优化总结>]
  • [bzoj1901]: Zju2112 Dynamic Rankings
  • [C#]猫叫人醒老鼠跑 C#的委托及事件
  • [C/C++]数据结构 深入挖掘环形链表问题