多态(三)

1.多态
  1.1多态:一种事物的多种形态
  1.2多态的表现
    行为(方法)多态:重写和重载
    引用多态(动态绑定):编译时的类型和运行时的类型不一致的这种现象叫动态绑定
      eg:父类=子类 Pet p=new Dog();
  1.3向上转型和向下转型
    向上转型:父类=子类
      eg:Pet p=new Dog();
    向下转型:子类=(子类)父类
      eg:Dog d=(Dog)p;
    注意:java.lang.ClassCastException:类型转换异常
      父类的运行时类型跟要转成子类的类型的不一致
    注意:引用多态存在继承关系

2.instanceof
  语法:对象A instanceof 类型B
    判断对象A的类型是否是类型B,如果是就返回true,否则返回false
    eg:d instanceof Dog

3.实现多态的两种形式
  a.使用父类作为方法形参实现多态
    eg:public void paly(Pet p){...};
  b.使用父类作为方法返回值实现多态
    eg:public Pet getPet(int type){...};

1 package Day11四;
2
3 public interface A {
4     public void sub();
5 }

A类

1 package Day11四;
2
3 public interface B {
4     public void sub();
5 }

B类

 1 package Day11四;
 2 /**
 3  * 特殊的抽象类
 4  * 1.接口所有方法都是抽象方法
 5  * 2.接口只能定义常量
 6  * @author Administrator
 7  *
 8  */
 9 public interface MyInterface extends A,B{
10     public static final int A=10;
11     public void add();
12 }

父类

 1 package Day11四;
 2 /*
 3  * 引用多态:父类去引用子类实例
 4  */
 5 public class Test {
 6     public static void main(String[] args) {
 7         int a=MyInterface.A;
 8         System.out.println(a);
 9     }
10 }

测试类

运行结果:

10

时间: 2024-08-13 10:14:29

多态(三)的相关文章

面向对象三大特性:封装,继承,多态(三、多态的进一步讲解)

多态(polymoph)指的是“执行期间(而非编译期间)”判断所引用对象的实际类型.,根据其实际的类型调用其相应的方法. 多态也叫动态绑定,也叫迟绑定. 多态的存在有三个必要条件: 要有继承 要有重写 父类引用指向子类对象

JAVA编程思想(4) - 多态(三)

若干个对象共享 例如Frog对象拥有其自己的对象,并且知道他们的存活多久,因为Frog对象知道何时调用dispose()去释放其对象.然而,如果这些成员对象中存在于其他一个或多个对象共享的情况,问题将不再简单,不再能简单的调用dispose()了.在这种情况下,我们也许需要引用计数来跟踪依旧访问着共享对象的数量. //: polymorphism/ReferenceCounting.java // Cleaning up shared member objects. import static

多态(三)

class Fu { int num = 5; void method1() { System.out.println("fu method_1"); } void method2() { System.out.println("fu method_2"); } static void method4() { System.out.println("fu method_4"); } } class Zi extends Fu { int num

php 三大特点:封装,继承,多态

一.封装 目的:让类更安全 做法:成员变量变为私有的,通过方法间接操作成员变量,在方法里面加限制条件 二.继承 概念:子类可以继承父类的一切 方法重写:在子类里面对父类进行方法重写 特点:单继承:一个子类可以有多个父类,一个父类可以派生出多个子类 override:方法重写 overload:重载,编辑多态 三.多态(运行多态) 概念:父类引用子类实例,由于子类里面对父类的方法进行重写,父类引用在调用该方法的时候表现出的不同状态 条件:1必须发生在集成下 2必须重写父类方法 3父类引用调用方法

OC学习篇之---类的三大特性(封装,继承,多态)

之前的一片文章介绍了OC中类的初始化方法和点语法的使用:http://blog.csdn.net/jiangwei0910410003/article/details/41683873,今天来继续学习OC中的类的三大特性,我们在学习Java的时候都知道,类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今天就来看一下OC中类的三大特性: 一.封装 学习过Java中类的同学可能都知道了,封装就是对类中的一些字段,方法进行保护,不被外界所访问到,有一种权限的控制功能,Java

PHP的面向对象 — 封装、继承、多态

K在上一次的基础篇中给大家介绍了一下关于PHP中数组和字符串的使用方法等,这一次,K决定一次性大放送,给大家分享一下PHP中面向对象的三大特性:封装.继承.多态三个方面的知识. 一.封装 在PHP中,封装可以用三个子来概括:私有化.具体来说,是通过访问修饰符,将类中不需要外部访问的属性和方法进行私有化处理,来实现访问控制. 那么封装的作用是什么?封装的作用主要有两点,一是方法封装,即将使用者关注的功能暴露,而隐藏其他使用者用不到的功能:二是属性封装,即对用户的数据进行控制,防止不合法的数据传输设

继承 和多态。。。。。

继承 继承优点:减少代码冗余,实现代码复用 继承的一些概念 1)在C#中,如果一个类后面通过冒号又跟了另一个类,那么我们就称冒号前边的类为子类, 冒号后边的类为父类.这种书写类的方式反映出来的关系就称为类的继承关系. 2)子类:派生类 父类:基类或者超类 满足is a 关系的两个类可以使用继承 例如: 学生 is a person base base:父类的对象 base():看成是调用父类的构造beast() base(参数列表)父类带参构造的参数列表一致,只能出现在子类构造后边. new子类

转 OC温故:类的三大特性(封装,继承,多态)

原文标题:OC学习篇之---类的三大特性(封装,继承,多态) 我们都知道,面向对象程序设计中的类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今天就来看一下OC中类的三大特性: 一.封装 封装就是对类中的一些字段,方法进行保护,不被外界所访问到,有一种权限的控制功能,Java中有四种访问权限修饰符: 1 public,default,protected,private 访问权限依次递减,这样我们在定义类的时候,哪些字段和方法不想暴露出去,哪些字段和方法可以暴露,可以通过

多态(C++版)

前些日子面了个试,结果深受刺激,总结学习一下吧,从"多态"开始.此文算是对多态的一个简单说明,仍系转载  (真够懒的) -------------------------------------------------------------------------------- 1.    什么是多态 2.    多态带来的好处 3.    C++中实现多态的方式 4.    细说用函数重载实现的多态 5.    细说用模板函数实现的多态 6.    小结 7.    细说用虚函数实

C++ 多态详解

前几天在网上看到这样的一个问题: 多态现在一般的用法,就是拿一个父类的指针去调用子类中被重写的方法.但我搞不懂为什么要那么做,我们直接在子类中写一个同名的成员函数,从而隐藏父类的函数不就行了么? 然后有人这样回答: 将父类比喻为电脑的外设接口,子类比喻为外设,现在我有移动硬盘.U盘以及MP3,它们3个都是可以作为存储但是也各不相同.如果我在写驱动的时候,我用个父类表示外设接口,然后在子类中重写父类那个读取设备的虚函数,那这样电脑的外设接口只需要一个.但如果我不是这样做,而是用每个子类表示一个外设