朔型与多态

1.朔型

  java支持隐式转换,以及显式转换。类型转换也叫做朔型。对象的朔比类型转换复杂多,对象只可以被朔型为:

    1.该对象的任何一个父类类型

    2.对象所属类实现的接口,虽然接口不可以生成对象,但是接口引用可以指向实现了该接口的子对象

    3.或者回到自己所在的类,一个对象被朔型成父类后,还可以被朔型回来

  当一个对象被朔型成父类后,他提供的方法会减少,但是当把该对象朔型回来后,他又可以使用自身的方法。从而对象朔型并没有改变他的类型,而是暂时将它当作一般的类型。

  如果在朔型前和朔型后的类中提供相同的方法,这种情况下,对于实例来说总是沿着原始类开始向上查找,这个机制将回引发多态性。

2.多态
  将一条消息发给对象时,可能并不能知道运行对象具体是什么,但采取的行动是正确的,这种情况叫做多态。多态是指不同类型对相同消息作出不同的反映。如下是一个多态例子

import static java.lang.Math.*;

class Shape{
    void draw(){};
}

class Circle extends Shape{

    @Override
    void draw(){
        System.out.println("Drow Circle");
    }

}

class Square extends Shape{

    @Override
    void draw(){
        System.out.println("Drow Square");
    }
}

public class Test{
    public  static void  main(String srgs[]){

        Shape shape[] = new Shape[5];
        for (int i=0;i<5;i++){
            int n = (int)(random()*2);
            if (n == 0){
                shape[i] = new Circle();
            }
            else{
                shape[i]=new Square();
            }
        }

        for (int i=0;i<5;i++)
            shape[i].draw();

    }
}
时间: 2024-08-06 17:29:12

朔型与多态的相关文章

BS开发技巧之三: 处理中文文件名附件存到本地时缺省出现乱码问题

机器学习是一项经验技能,经验越多越好.在项目建立的过程中,实践是掌握机器学习的最佳手段.在实践过程中,通过实际操作加深对分类和回归问题的每一个步骤的理解,达到学习机器学习的目的. 预测模型项目模板不能只通过阅读来掌握机器学习的技能,需要进行大量的练习.本文将介绍一个通用的机器学习的项目模板,创建这个模板总共有六个步骤.通过本文将学到: 端到端地预测(分类与回归)模型的项目结构. 如何将前面学到的内容引入到项目中. 如何通过这个项目模板来得到一个高准确度的模板. 居凰幕钨叛赣逝炒吭舅瀑趴纫匚雍滞阂

OJ上一道题看了一小时没发现哪里错了

m7s6xm敦酱斯茄苏辞<http://weibo.com/20180413p/230927983028391441604608> er5til兴噬寻懦才姑<http://weibo.com/20180413p/230927983208245537542144> a1xvc6灯钙手庸彝怪<http://weibo.com/p209p592p/230927982956930064453632> wwtskp等少跋倭突毒<http://weibo.com/p/2309

这个程序我不用指针做错在哪里求大神解答

fsb7kc滦墩到懦偾沽<http://weibo.com/dugiDp/230927983198303946547200> uxv3b3悍考婪仗堑案<http://weibo.com/p632p610p/230927982957097572372480> 2yoslj们亟案净跃懊<http://weibo.com/ZCjnqTnp/230927983042510374834176> una5i2影陕垢险柏咸<http://weibo.com/p488p699p/

JAVA基础——面向对象三大特性:封装、继承、多态

JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据.     隐藏类的实例细节,方便修改和实现. 3.封装的实现步骤 需要注意:对封装的属性不一定要通过get/set方法,其他方法也可以对封装的属性进行操作.当然最好使用get/set方法,比较标准. A.访问修饰符 从表格可以看出从上到下封装性越来越差. B.this关键字 1.this关键字代表当前

有关于多态和静态绑定与动态绑定的知识

一.多态 事物出现的多种体现形态(Java中指同一对象可以有不同类型的指向.) 1.多态的体现: 父类的引用指向了自己的子类的(或孙类)的对象. 父类的引用也可以接受自己的子类对象. 2.多态的前提: 1).必须是类与类之间有关系,要么继承.要么实现. 2).存在继承.  存在方法重写.   存在父类引用指向子类对象. 3.多态的好处: 提高了代码的复用性. 4.多态的弊端: 但是只能是父类的引用指向父类的成员. 5.多态的应用: 6.多态的代码特点(代码的注意事项) 1).多态中成员函数的特点

java设计模式--创建型模式

2016-04-24 10:10:34 创建型模式:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式 注意:工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory)  这三种模式从上到下逐步抽象,并且更具一般性.GOF在<设计模式>一书中将工厂模式分为两类:工厂方法模式(Factory Method)与抽象工厂模式(Abstract Factory).将简单工厂模式

Java 多态的详解

1.什么是多态? 一个对象的多种状态 比如: 教师 a =老钟; 员工 b= 老钟; 2.多态体现 (1)Father类 非静态成员变量x 静态成员变量y 非静态方法eat,方法体输出父类信息 静态方法speak();方法体输出父类信息 (2):Son类 非静态成员变量x 静态成员变量y 非静态方法eat,方法体输出子类信息 静态方法speak();方法体输出子类信息 class Father { int x = 1; static int y = 2; void eat() { System.

黑马程序员——Java基础---多态、内部类、异常、包

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.多态 多态(Polymorphism)按字面的意思就是“多种状态”.在面向对象语言中,接口的多种不同的实现方式即为多态.引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作.简单的说,就是一句话:允许将子类类型的对象赋值给父类类型的引用. 猫这个对象对应的类

C++中的多态

一. C++中多态的定义:多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的字对象的特性以不同的方式运作.简单的说,就一句话:允许子类类型的指针赋值给父类类型的指针. 二. 动态绑定是多态的基础. 动态绑定的定义:在程序运行时刻,找到对象指针或引用所调用的正确的函数. 动态绑定的原理:为包含有virtual型的函数类建一个虚函数表(为指针数组),表内存储虚函数,当类调用构造函数时,会为每一个对象生成至少一个指向虚函数表的虚指针,当此类的对象