多态

python语言的鸭子类型和强类型语言的多态

匿名 (未验证) 提交于 2019-12-02 22:51:30
python语言的鸭子类型和强类型语言的多态   前面讲接口类的时候举过一个有关支付方式的例子,支付方式可以有几种,微信支付,支付宝支付,苹果支付等,这几个不同的支付都统一于支付,像这样几个类都统一于 某一个类或者某一个方法,或者说一个类有不同的形态的情况就属于多态;虽然几种支付方式都归一于支付类,执行的方法一样,但是每一个支付方式都有自己的特性,实现的 形态也不一样,即为多态性。 class Payment: # 必要的父类 def pay(self,money): pass class Wechatpay(Payment): # 子类继承父类 def pay(self,money): print('已经使用微信支付了%s元' % money) class Alipay(Payment): # 子类继承父类 def pay(self,money): print('已经使用支付宝支付了%s元' % money) class Aapplepay(Payment): # 子类继承父类 def pay(self,money): print('已经使用苹果支付了%s元' % money) def pay(pay_obj,money): # 受到父类的约束,这里的pay_obj只能传入继承了父类的子类 # 统一支付入口,归一化设计,不管使用哪种方式,都统一于支付方法 pay_obj.pay

Java基础――继承和多态

匿名 (未验证) 提交于 2019-12-02 21:53:52
  面向对象的编程允许从已经存在的类中定义新的类,这称为继承。   面向过程的范式重点在于方法的设计,而面向对象的范式将数据和方法结合在对象中。面向对象范式的软件设计着重于对象以及对象上的操作。面向对象的方法结合了面向过程范式的强大之处,并且进一步将数据和操作集成在对象中。   继承可以使得你可以定义一个通用的类(即父类),之后扩充该类为一个更加特定的类(即子类)。在Java术语中,如果类C1扩展自另一个类C2,那么就将C1称为次类,将C2称为超类。 超类也称为父类或基类,次类又称为子类、拓展类或派生类。   子类从它的父类中继承可访问的数据域和方法,还可以添加新数据域和新方法。   如果父类中有私有的数据域,这个类被继承后,父类中的私有数据域是不能被子类访问的,唯一能读取和改变它们的方法就是通过它们的get和set方法。   和传统的理解不同,子类并不是父类的一个子集。实际上,一个子类通常比它的父类包含更多的信息和方法。   父类中的私有数据域在该类之外是不可访问的。因此,不能在子类中直接使用。但是,如果父类中定义了公共的访问器/修改器方法,那么可以通过这些公共的访问器/修改器来访问和修改它们。   不是所有的“是一种”关系都该用继承来建模。继承是用来为“是一种”关系建模的。不要仅仅为了重用方法这个原因而盲目地扩展一个类。   某些程序设计语言是允许从几个类派生出一个子类的

Java_多态

匿名 (未验证) 提交于 2019-12-02 21:53:52
什么是多态呢?   在Java程序中,允许不同类的对象对同一消息做出不同的响应.   编译时多态:又叫设计时多态,通过方法重载实现   运行时多态(Java中的多态):程序运行时,决定调用哪个方法 实现多态的前提条件:   必须满足继承关系;   父类引用指向子类实例对象; 向上转型:(隐式转型,自动转型)   父类应用指向子类实例,可以调用子类重写父类的方法以及父类派生的方法,无法调用子类特有的方法   小类转型为大类   注意:父类中的静态方法无法被子类重写,所以向上转型后,只能调用到父类原有的静态方法   Animal one = new Cat(); 向下转型:(强制类型转换)   子类的引用指向父类对象,此处必须进行强转,可以调用子类特有的方法.   必须满足转型条件才能强转:instaceof运算符:返回true/false   if(one instaceof Cat)//one 是否满足 Cat类型特征 作用:合理规避一些异常的产生;   Cat temp = (Cat)one; 抽象类:   abstract 关键字:限制类的实例化 在我们Java开发中,在Java有的类是不需要实例化的,没有意义的,比如动物是一个父类,实例化一个动物类的对象时没有意义的   abstract class 不允许直接实例化,可以通过向上转型,指向子类实例  

JAVA 实验5 类的多态性

匿名 (未验证) 提交于 2019-12-02 21:53:52
桂 林 理 工 大 学 实 验 报 告 班级 软件16-1班 学号 3162052051116 姓名 张识虔 同组实验者 实验名称 类的多态性 日期 2018年06 月15日 一、实验目的: 理解类的多态性,掌握方法的继承、重载和覆盖,掌握如何从键盘输入数据以及多重循环的使用。 二、实验环境: 三、实验内容: (一)类的多态性练习 1. 方法的重载 方法的重载是指对同名方法的不同使用方式。 1) 程序功能:对不同的数进行排序输出。在IntSort 类中定义2 个同名的方法sort。 2) 编写KY5_1.java 文件,源代码如下。 class IntSort { public String sort ( int a , int b ) { if ( a > b ) return a + " " + b ; else return b + " " + a ; } public String sort ( int a , int b , int c ) { int swap ; if ( a < b ) { swap = a ; a = b ; b = swap ; } if ( a < c ) { swap = a ; a = c ; c = swap ; } if ( b < c ) { swap = b ; b = c ; c = swap ; } return a + " "

初学Java-15-多态

匿名 (未验证) 提交于 2019-12-02 21:53:52
package com.dyz.test; interface HelloWorld{ void sayWhat(); } package com.dyz.test; interface HiWorld{ void sayHi(); } package com.dyz.test; public abstract class AbstractSuper{ protected abstract void sayGood(); } package com.dyz.test; public class Child extends AbstractSuper implements HelloWorld,HiWorld{ public void sayWhat(){ System.out.println("good good study,day day up"); } public void sayHi(){ System.out.println("hi"); } public void sayGood(){ System.out.println("good"); } } package com.dyz.test; public class ChildTest{ public static void main(String[] args){ HelloWorld hello = new

【java基础】第11天――接口、多态

匿名 (未验证) 提交于 2019-12-02 21:53:52
今日内容介绍 1、接口 2、多态 =======================第一节课开始============================================= * A:接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。 请记住:一切事物均有功能,即一切事物均有接口。 * A: 接口的定义 与定义类的class不同,接口定义时需要使用interface关键字。 定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字的编译后仍然会产生.class文件。这点可以让我们将接口看做是一种只包含了功能声明的特殊类。 * B : 定义格式 public interface 接口名 { 抽象方法1; 抽象方法2; 抽象方法3; } * C: 定义步骤 使用interface代替了原来的class,其他步骤与定义类相同: 接口中的方法均为公共访问的抽象方法 接口中无法定义普通的成员变量 * A: 类与接口的关系 类与接口的关系为实现关系,即类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements。 其他类(实现类)实现接口后,就相当于声明:

Java 接口和多态练习

匿名 (未验证) 提交于 2019-12-02 21:53:32
我们鼠标和键盘实现USB接口,那么我们鼠标和键盘就变成了USB设备,这时候我们就可以把它放到笔记本电脑里面去用 1 package com.biggw.day10.demo07; 2 3 /** 4 * @author gw 5 * @date 2019/11/2 0002 下午 16:46 6 */ 7 public class Computer { 8 public void open() { 9 System.out.println("打开电脑!"); 10 } 11 12 public void close() { 13 System.out.println("关闭电脑!"); 14 } 15 16 public void useDevice(Usb usb) { 17 if (usb instanceof KeyBorad) { 18 KeyBorad keyBorad = (KeyBorad) usb; 19 keyBorad.open(); 20 keyBorad.type(); 21 keyBorad.close(); 22 } else if (usb instanceof Mouse) { 23 Mouse mouse = (Mouse) usb; 24 mouse.open(); 25 mouse.click(); 26 mouse.close(); 27 }

16、Java中实现多态的机制是什么?

匿名 (未验证) 提交于 2019-12-02 21:52:03
Java实现多态有三个必要条件:继承、重写、向上转型。 静态的多态:方法名相同,参数个数或类型不相同。(overloading) 动态的多态: 子类覆盖父类的方法,将子类的实例传与父类的引用调用的是子类的方法 实现接口的实例传与接口的引用调用的实现类的方法。 来源:博客园 作者: helen305250903 链接:https://www.cnblogs.com/helenwq/p/11679952.html

Java中的多态应用

匿名 (未验证) 提交于 2019-12-02 21:52:03
1 class Test { 2 public static void main ( String [] args ) { 3 System . out . println ( new B (). getValue ());       //1、执行B的构造方法       //14、执行父类A的getValue得到17       //18、输出返回值17 4 } 5 static class A { 6 protected int value ; 7 public A ( int v ) { 8 setValue ( v );          //3、调用子类B重写的setValue 9 } 10 public void setValue ( int value ) { 11 this . value = value ;          //5、value=10          //13、valve=16 12 } 13 public int getValue () { 14 try { 15 value ++;            //6、value=11            //15、value=17 16 return value ;            //10、执行finally前暂存value的值11,返回11           //18

javaSE面向对象2

匿名 (未验证) 提交于 2019-12-02 21:52:03
1 继承 继承的概念 继承也叫传承,也就是自上而下的传递;当我们在描述某些事物的时候 发现 有些事物具有重复的属性和行为,那么 就可以将这些重复的东西进行抽取 组合成一个新的类别,这个新的类别称之为父类。 通过extends关键字可以实现类与类的继承: class子类名 extends 父类名{ } 继承的好处和弊端 提高了代码的复用性:多个相同的成员可以方法放到同一个类中; 提高了代码的为属性:如果功能的代码需要修改,修改一处即可; 让类与类之间产生了关系,是多态的前提:其实这也是继承的一个弊端,类的耦合性很强; 开发原则:低耦合,高内聚 耦合:类与类的关系; 内聚:就是自己完成某件事情的能力。 注意 和传统的理解不同,子类并不是父类的一个子集。实际上,一个子类通常比它的父类包含更多的信息和方法。 父类中的私有数据域在该类之外是不可访问的。因此,不能在子类中直接使用。但是,如果父类中定义了公共的访问器 / 修改器,那么可以通过这些公共的访问器 / 修改器来访问和修改它们。 不是所有的 “是一种”(isa) 关系都该用继承来建模。例如:正方形是一种矩形,但是不应该定义一个 Square 类来扩展 Rectangle 类,因为 width 和 height 属性并不适合于正方形。应该定义一个继承自 CeometricObject 类的 Square 类,并为正方形的边定义一个