继承和多态

Python学习之-继承和多态 什么是继承?什么是多态?面向对象的三大特性:封装:根据 职责 将属性和方法封装到一个抽象类中继承: 实现代码的重用,相同的代码不需要重复的编写多态: 不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度继承继承是一种机制,它使得一个类(称为子类或派生类)能够继承另一个类(称为父类或基类)的属性和行为(方法)。子类除了可以继承父类的功能外,还可以添加新的功能或重写某些功能。单继承: 当一个类仅继承自一个父类时。多继承: 当一个类继承自多个父类时。 阅读详情

面向对象编程时有一个非常重要的原则:write once ,only once! 编写一次,且仅编写一次!

如果没有继承这种机制我们可能要重复写很多代码!!下面来看一下继承!!!

 

一 继承

 

(1)子类如果继承父类必须使用extends这个关键字!

(2)子类调用父类的构造方法使用super关键字,也可以通过super来调用交类的!

(3)继承不允许多重继承,只能单一继承.即:一个类只能继承一个类,不能继承多个类.但是一个类可以被多个类继承!

(4)在父类中只定义一些通用的方法和属性,子类会自动继承父类的方法和属性.但是子类还可以有自己特定的方法和属性!

(5)创建对象时,选创建父类的对象,再创建子类的对象.如果没有显示调用交类的构造方法,将自动调用父类的无参构造方法!

 

例:class Base{

        public String name;

        public Base(String PName){

            name=PName;

}

}

 

class Child extends Base{

        public Child(){

            name="hello";

            super("child");

}

}

 

以上子类的写法是错误的,super("child")必须写到第一位.因为创建对象时,要先创建父类的对象,再创建子类的对象!!!

 

二 方法的重写

定义:如果在子类中定义一个方法,其名称,返回类型号用参数列表正好与父类中某个方法的名称,返回类型及参数列表相匹配,那么可以说子类的方法重写(override)了父类的方法.

 

三 多态(是面对对象的核心)

同一个实现接口,使用不同的实例而执行不同的操作.

 

如何实现多态

(1)子类重写父类的方法

(2)把父类类型作为参数类型,该父类及其子类对象作为参数传入

(3)运行时,根据实际创建的对象类型动态决定使用哪个方法

以下例子详细说明:

/**
 * 这是一个teacher的父类
 * @author Administrator
 *
 */
public class Teacher {
 //私有属性
 private String name;
 private String school;
 
 //构造方法
 public Teacher(String name,String school){
  this.name=name;
  this.school=school;
 }
 
 /**
  * 授课的方法
  */
 public void giveLesson(){
  System.out.println("知识点讲解");
  System.out.println("总结提问");
 }
 
 public void introduction(){
  System.out.print("大家好!我是"+school+"的"+name+".");
 }
 
 
}

 

/**
 * 继承了teacher类的JavaTeacher类
 * @author Administrator
 *
 */
public class JavaTeacher extends Teacher {
 public JavaTeacher(String name,String school){
  super(name,school);
 }
 /**
  * 了类重写父类中授课的方法
  */
 public void giveLesson(){
  System.out.println("启动Eclipse");
  //调用父类的授课方法
  super.giveLesson();
 }

}


/**
 * 继承了teacher类的DotNetTeacher
 * @author Administrator
 *
 */
public class DotNetTeacher extends Teacher {
 //这个类的注释就不加了,同上一个类JavaTeacher
  public DotNetTeacher(String name,String school){
   super(name,school);
  }
 
  public void giveLesson(){
   System.out.println("启动 Visual studio 2008");
   super.giveLesson();
  }
}

 

/**
 * 这个类体现多态
 * @author Administrator
 *
 */
public class Polymorphism {
 
 /**
  * 对教员进行评估的方法
  */
 public void judage(Teacher t){
  t.giveLesson();
 }
 
 //用main方法来测试多态性
 public static void main(String[] args){
  Polymorphism p=new Polymorphism();
  p.judage(new JavaTeacher("李明","北京"));
  p.judage(new DotNetTeacher("李岚","郑州"));
 }

}

 


 

体系结构学习-6-超标量处理器  MIPS32-5段流水线采用了指令级并行方式(5个流水段同时运行5条指令)提升系统吞吐率,是一种标量处理器(CPI≥1CPI \ge 1CPI≥1),但是一个周期一条指令以及无法满足现代计算机需求了。 超标量处理器(Superscalar) 1、基本思想:增强指令集并行,让每个周期执行更多指令,实现 CPI<1CPI<1CPI<1 。(IPC=1/CPIIPC = 1... 阅读详情

相关推荐

zabbix 监控EMC存储

经过搜索,找到了脚本地址,该项目应该是模板原作者创建的,该项目也有zabbix模板,和上面的应该是相同的,我用的是上面的模板。./unity_get_state.py --api_ip='X.X.X.X' --api_port='443' --api_user='zabbix' --api_password='PASSWORD' --storage_name="zabbix web前端配置的主机名" --discovery。修改权限,给zabbix用户执行权限,模板调用时以zabbix用户执行。

wangyfde的专栏 3754

java中继承

前两个月写了一篇文章多态,,,,却忘记了继承,以下简要概括什么是继承 ,   1、  什么是继承? 子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。     2、  为什么需要继承?什么时候应该继承? 使用继承可以有效实现代码复用,避免重复代码的出现。 当两个类具有相同的特征(属性)和行为(方法)时,可以将相同的部

yutong5818的博客 336

抽象代数学习笔记(抽象代数的历史、运算)

1. 抽象代数历史 对于五次及以上的代数方程是否存在根式解这个问题,欧拉、拉格朗日、高斯等数学家都没得到答案,但是他们得出五次及以上的代数方程组不存在根式解的结论。19世纪初,阿贝尔提出五次及以上的代数方程不存在根式解,并找出一类特殊的五次及以上的代数方程可以用根式解表示出来。另外一个年轻的数学家伽罗华...

huangzhpei的博客 3667

32. 为什么需要继承?什么时候应该继承?

1. 为什么需要继承? 使用继承可以有效实现代码的复用,避免重复代码的出现 当两个类具有相同的特征(属性)和行为(方法)时,可以相同的部分抽取出来放到一个类中作为父类,其他两个类继承这个父类。 继承实现了面向对象的原则:write once,only once(编写一次,且编写一次) 2. 如何实现继承? 在Java语言中,用extends(扩展)关键字来表示一个类继承了另一个类。 在父类中只定义了一些通用的属性和方法。 子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法。或子类重新定义父类

zhu_fangyuan的博客 2649

五子棋AI实战:极大极小搜索、Alpha-Beta剪枝与禁手实现

博弈树搜索是双人零和博弈AI的经典决策框架,其核心思想是假设对手最优应对,通过递归遍历走法空间寻找最优解。极大极小搜索配合Alpha-Beta剪枝,能在不影响决策结果的前提下将搜索量降至平方根级别,大幅提升搜索效率。在五子棋场景中,还需处理黑棋禁手规则,包括双三、双四和长连判定,并将其融入搜索框架。评估函数基于棋型识别对局面打分,走法排序和迭代加深进一步优化剪枝效果。这些技术共同构成了一个可运行的五子棋AI,适用于棋类AI入门与博弈搜索实践。

weixin_29054399的博客 128

HFSS的边界条件与激励方式

在电磁场理论学习中我们知道,电磁场问题的求解都归结于麦克斯韦(Maxwell)方程组的求解,在HFSS中波动方程的求解同样是由微分形式的麦克斯韦方程推导出来的。而边界条件定义了求解区域的边界以及不同物体交界处的电磁场特性,是求解麦克斯韦方程的基础。 只有在假定场矢量是单值、有界、并且沿空间连续分布的前提下,微分形式的麦克斯韦方程组才是有效的;而在求解区域的边界,不同介质的交界处和场源处,场矢量是不连续的,那么场的导数也就失去了意义。 边界条件就是定义跨越不连续边界处的电磁场特性,因此,正确地理解、定义并

ASH_GUARDIAN的博客 1万+

[源码分析][Linux]READ_ONCE与WRITE_ONCE

READ_ONCE#define READ_ONCE(x) __READ_ONCE(x, 1)#define __READ_ONCE(x, check) \ ({ \ union { typeof(x) __val; char __c[1]; } __u; \

火云的专栏 1万+

手把手教你用STM32标准库写一个能OTA升级的Bootloader(附完整代码)

本文详细介绍了如何使用STM32标准库开发支持OTA无线升级的Bootloader系统,包括Flash分区规划、Bootloader核心实现、无线升级流程及安全校验机制。通过实战代码示例,帮助开发者快速掌握STM32固件升级技术,提升物联网设备的远程维护能力。

weixin_30181209的博客 262

面向对象基础

抽象:提取事物的本质,共性的属性和方法,忽略某些不必要的细节和个性的差异。继承实现了面向对象的原则:write once,only once(编写一次、且编写一次)。继承的注意事项:调用父类的构造方法的语句(super语句)必须是构造方法中的第一条语句。因为创建对象的时候,需要先创建父类对象,再创建子类对象。注意:创建对象时,先创建父类对象,在创建子类对象。如果没有显示调用父类的构造方法,将自动调...

zyz0225的博客 193

STM32读取BQ40Z50的数据

TI电池管理芯片BQ40Z50,通信协议是SMBUS,类似IIC,速率要求10-100KHz   用的STM32F103的硬件IIC读取电池的各种数值,源代码如下: ​ #include "iic.h" #include "stdio.h"  //***************************************************** // IIC2初始化函数:初始化ST...

百步登峰的博客 1万+

作物生长模型Oryza V3实战1:为什么要研究它

ORYZAV3是水稻生长模拟模型ORYZA2000的最新升级版本(3.5版),作为作物生长模型,它通过数学方法和计算机技术模拟水稻生长发育过程及其与环境条件的相互作用。主要功能包括:模拟不同条件下的水稻生长和产量形成、评估环境胁迫影响、分析土壤碳氮动态以及进行区域尺度模拟。国内应用广泛,科研机构用于气候变化影响评估、灌溉模式比较等研究,并开展参数敏感性分析和应用培训。使用流程分为六个步骤:确定输入参数(气象、土壤、作物三类)、参数校准、设置模拟环境、运行模型、分析结果(输出50个参数)和计算产量(穗干重×收

504

【Java】继承和多态

上述图示中,Dog和Cat都继承了Animal类,其中:Animal类称为父类/基类或超类,Dog和Cat可以称为Animal的子类/派生类,继承之后,子类可以复用父类中成员,子类在实现时只需关心自己新增加的成员即可。总结:成员方法没有同名时,在子类方法中或者通过子类对象访问方法时,则优先访问自己的,自己没有时再到父类中找,如果父类中也没有则报错。(1)通过子类对象访问父类与子类中不同名方法时,优先在子类中找,找到则访问,否则在父类中找,找到则访问,否则编译报错。2、子类和父类成员变量同名。

2301_79765510的博客 2072

secureCRT 破解方法

3、输入注册信息打开keygen.exe,点击path,选择SecureCRT的安装目录(例如D:\VanDykeSoftware\Clients)的securecrt.exe打开,继续下一步打开LicenseHelper.exe,如下。1、注册SecureCRT9.1打开keygen.exe,出现以下问题(没有关掉安全防护,一双击打开,Windows会自动识别keygen.exe为bingdu并删除)打开桌面SecureCRT,此界面不输入内容,直接点击下一步。2、存储配置文件夹(可以默认安装)

逆水行舟 1万+

java继承和多态

多态,就是指方法多种状态,换句话说就是同一个方法会表现不同的的状态。

weixin_69873230的博客 2020

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C++继承和多态

继承我们可以理解为是一种手段,我们是不是可以从其他的地方继承一些东西来供自己使用,继承是面向对象程序设计使代码可以复用的一个很重要的手段。我们可以再保持原有类特性的基础上进行扩展,增添一些其他的功能,而这种新产生的类,就叫做派生类。class Person //基类public:protected:private:class Student : public Person //派生类protected:int main()Student s;

2402_84602321的博客 1990

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Python 继承和多态

本文介绍了Python中面向对象编程的核心概念——继承与多态。继承允许子类复用父类的属性和方法,通过单继承和多继承实现代码复用与扩展,其中多继承需要注意方法解析顺序(MRO)。多态则通过统一接口实现不同行为,使代码更具灵活性。文章通过动物类示例演示了继承的实现方式、方法重写、super()的用法以及多态的应用场景,并分析了工厂模式等常见设计模式。最后提醒开发者避免滥用继承,注意多继承的复杂性,并合理使用super()方法。这些OOP特性可显著提升代码的可维护性和扩展性。

余子越的博客 1277

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C++ 继承和多态

讲解继承和多态,多态的实现原理

凡事都是靠练习 3338

Java中的继承和多态

1、  什么是继承,继承的特点?子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。特点:在继承关系中,父类更通用、子类更具体。父类具有更一般的特征和行为,而子类除了具有父类的特征和行为,还具有一些自己特殊的特征和行为。在继承关系中。父类和子类需要满足is-a的关系。子类是父类。表示父类和子类的术语:父类和子类、超类和

新新 6万+

关于继承和多态

将子类对象赋值给父类引用变量的过程称为向上转型。如果我们自顶向下的看多态,父类在最顶端,子类在最低端,从子类转化为父类的过程,就是向上转型;

m0_69932385的博客 970

【多态】有关多继承和菱形继承的多态

博主会持续更新本篇文章主要讲解多继承和菱形继承的多态的相关内容。

有趣的中国人的博客 1492

继承和多态!!

"用尽量简单的方式使对象进入可工作状态", 尽量不要在构造器中调用方法(如果这个方法被子类重写, 就会触 发动态绑定, 但是此时子类对象还没构造完成), 可能会出现一些隐藏的但是又极难发现的问题真嘟超级详细,人都写的有点脑子不清了,但其实写完博客之后,自己对这部分的知识也加强巩固了一波。!

Y_1215的博客 2114
上一篇: Javascript中的事件--Event对象
下一篇: 一道面试题:生成50个1到100之间的随机数,并且对其中的偶数进行降序排列 然后让他里面的数能够打乱,类似洗牌效果
小瑞
博客等级 码龄19年 240粉丝 274原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值