精华内容
下载资源
问答
  • 面向对象 多态

    2008-07-28 17:12:07
    面向对象 多态

    面向对象 多态

    展开全文
  • 面向对象多态

    2019-09-24 07:23:43
    多态是继封装、继承之后,面向对象的第三大特性。 最终多态体现为父类引用变量可以指向子类对象。 多态的定义格式:就是父类的引用变量指向子类对象 父类类型 变量名 = new 子类类型(); 变量名.方法名(); 2 ...

    1    多态概述

    多态是继封装、继承之后,面向对象的第三大特性。

    最终多态体现为父类引用变量可以指向子类对象。

    多态的定义格式:就是父类的引用变量指向子类对象

    父类类型  变量名 = new 子类类型();

    变量名.方法名();

    2   多态-成员的特点

    复制代码
    public class Person {
        int a=0;
        public void speak(){
            System.out.println("这是父类的方法");
        }
    }
    
    public class Student extends Person{
        int a=1;
        public void speak(){
            System.out.println("这是子类的方法");
        }
    }
    
    public class Test {
        public static void main(String[] args) {
            //多态
            //父类引用指向子类对象成员变量特点:编译运行看左边
            //编译看父类,如果父类有,则访问父类的成员变量
            //如果父类没有,则编译失败
            Person p=new Student();
            System.out.println(p.a);
            //成员方法:编译看左边,运行看右边
            //编译看父类,如果父类有,则编译成功,运行时子类重写后的方法,如果父类没有,则编译失败
            p.speak();
            //判断p是否属于人类
            System.out.println(p instanceof Person);
            System.out.println(p instanceof Student);
        }
    }
    复制代码

    3  instanceof关键字和多态-转型

    子类类型 变量名 = (子类类型) 父类类型的变量;

    如:Student stu = (Student) p;  //变量p 实际上指向Student对象

    l  什么时候使用向下转型

    当要使用子类特有功能时,就需要使用向下转型。

    l  什么时候使用向上转型:

    当不需要面对子类类型时,通过提高扩展性,或者使用父类的功能就能完成相应的操作,这时就可以使用向上转型。

    总结:

    总结下封装、继承、多态的作用:

    l  封装:把对象的属性与方法的实现细节隐藏,仅对外提供一些公共的访问方式

    l  继承:子类会自动拥有父类所有可继承的属性和方法。

    l  多态:配合继承与方法重写提高了代码的复用性与扩展性;如果没有方法重写,则多态同样没有意义。

    转载于:https://www.cnblogs.com/lxzwhite/p/10694482.html

    展开全文
  • 一、多态的概念多态是继封装,继承之后,面向对象的三大特性。现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的张三同学既是学生也是人,即出现两种形态。java作为面向对象的语言,同样可以描述...

    一、多态的概念

    多态是继封装,继承之后,面向对象的三大特性。

    现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的张三同学既是学生也是人,即出现两种形态。

    java作为面向对象的语言,同样可以描述一个事物的多种形态,java中多态的代码体现在一个子类对象(实现类对象)既可以给这个子类(实现类对象)引用变量赋值,又可以给这个子类(实现类对象)的父类(接口) 变量赋值。

    父类的引用变量指向子类对象。多态的前提需要有继承关系或者是实现关系,否则没法完成多态。在使用多态后的父类引用变量调用方法时,会调用子类重写的;

    二、多态的定义与使用

    多态的定义格式:就是父类的引用变量指向子类的对象;

    父类类型变量名 = new 子类对象();

    变量名.方法名();

    1.普通类的多态定义格式:

    父类类型变量名 = new 子类();

    2.抽象类多态的定义:

    抽象类变量名 =new 抽象类子类();

    3.接口多态定义的格式:

    接口变量名 =new 接口实现类();

    注意:虽然变量指向子类的对象,但表现的是一个父类的形态,可以调用一切父类的方法,子类特有的方法将不能调用

    三、多态调用的注意事项:

    编译:成员变量,成员方法都需要看父类;父类没有编译报错;

    运行:成员变量运行父类的成员变量,成员方法运行父类重写的方法

    四、多态的好处与弊端

    好处:多态配合继承子类重写,提高了代码的复用性与扩展性

    弊端:不能调用子类特有的方法

    五、向上向下类型转换

    多态本身是子类类型向父类类型向上转型的过程;

    1.向上转型:

    当子类的对象赋值给一个父类的引用时,便是向上转型,多态本身就是向上转型的过程

    使用格式:父类类型 变量名= new 子类类型();

    2.向下转型:

    一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类的引用转换为子类引用,这个过程是向下转型。直接创建父类对象的无法使用向下转型;

    使用格式:

    子类类型 变量名= (子类类型) 父类类型的变量;

    六、instanceof 关键字

    可以通过instanceof关键字来判断某个对象是否属于某种数据类型;

    使用格式:

    boolean b= 对象(new ) instanceof 数据类型;

    展开全文
  • 深度解析面向对象多态 多态的概念 多态指的是同一个方法的调用,由于对象不同可能会有不同的行为。 现实生活中,同一个方法,具体实现会完全不同。 1.多态是方法的多态,不是属性的多态(多态与属性无关)。 2.多态...

    深度解析面向对象多态

    多态的概念

    多态指的是同一个方法的调用,由于对象不同可能会有不同的行为。 现实生活中,同一个方法,具体实现会完全不同。
    1.多态是方法的多态,不是属性的多态(多态与属性无关)。
    2.多态存在要有3个必要的条件:继承,方法重写,父类引用指向子类象。
    3.父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。

    public class Test1 {
        public static void main(String[] args) {
            Animal a = new Animal();
            animalCry(a);//输出:叫一声
            Dog b = new Dog();
            /*
            子类对象作为实参调用静态方法时,会调用子类的方法,而不是父
            类中被重写的方法
            多态就是同一个接口,使用不同的实例而执行不同操作
             */
            animalCry(b);//输出:汪汪汪
            Cat c = new Cat();
            animalCry(c);//输出:喵喵喵
        }
        //创建一个静态方法 实参为父类的类型  
        //多态就是同一个接口,使用不同的实例而执行不同操作
        static void animalCry(Animal a){
            a.shut();
        }
        //如果没有多态我们就要创建多个重载方法实现
      /*  static void animalCry(Dog a){
            a.shut();
        }
        static void animalCry(Cat a){
            a.shut();
        }*/
    }
    class Animal{
        public void shut(){
            System.out.println("叫一声");
        }
    }
    class Dog extends  Animal{
        public void shut(){
            System.out.println("汪汪汪");
        }
    }
    class Cat extends  Animal{
        public void shut(){
            System.out.println("喵喵喵");
        }
    }
    输出:
    叫一声
    汪汪汪
    喵喵喵
    

    多态的优点

    1. 消除类型之间的耦合关系
    2. 可替换性
    3. 可扩充性
    4. 接口性
    5. 灵活性

    多态中的成员访问特点

    成员访问特点

    • 成员变量
      ​ 编译看父类,运行看父类
    • 成员方法
      ​ 编译看父类,运行看子类

    多态的好处和弊端

    • 好处
      ​ 提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作
    • 弊端
      ​ 不能使用子类的特有成员
    展开全文
  • 理解的要点:多态意味着父亲的变量可以指向子类对象面向对象程序设计的三大支柱是封装、继承和多态封装对外把相应的属性和方法实现的细节进行了隐藏。继承关系使一个子类继承父亲的特征,并且加上了一些新的特征。...
  • 面向对象多态的好处和弊端 优点 1.提高代码的维护性(由继承保证):上面修改了下面也跟着修改。 2.提高了代码的延展性(由多态保证)。 3.可以当做形式参数,可以接受任何类型的子类对象。 缺点 不能使用子类...
  • 指同一个方法调用由于对象不同可能会产生不同的行为。 关于多态要注意以下几点: 多态是方法的多态,属性没有多态多态的存在有两个必要条件:继承、方法重写 代码如下 class Man: def eat(self): print('饿了,...
  • 一、多态的概念多态是继封装,继承之后,面向对象的三大特性。现实事物经常会表现出多种形态,如学生,学生是人的一种,则一个具体的张三同学既是学生也是人,即出现两种形态。java作为面向对象的语言,同样可以形容...
  • PHP面向对象多态

    2017-09-08 13:36:13
    PHP在面型对象中,多态:在面向对象中,指某种对象实例的不同表现形态,一个类中的各个子类 举个栗子: abstract class Person { public abstract function run(); } class FatMan extends Person { public ...
  • java面向对象多态特性

    2019-02-17 21:00:32
    多态是继封装,继承之后,面向对象的三大特性。 现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的张三同学既是学生也是人,即出现两种形态。 java作为面向对象的语言,同样可以描述一个事物的...
  • 面向对象的三大特征: 封装、继承、多态 一:封装 封装的内容包括两部分:封装数据和封装函数 封装数据:保护隐私(这一类数据只有这种类才能使用) 封装函数:降低复杂度,这和面向过程的编程中的作用一样。 封装的...
  • python中的继承和多态?继承:在已有类的基础上创建新类,这其中的一种做法就是让一...如何用通俗的方式理解python函数之间的继承,多态python本来就是多态的 python的变量是没有类型的,只有指向的对象是有类型的,...
  • 面向对象四大特征:继承、封装、抽象、多态 多态:一种办法拥有多种实现形式,具体的实现方式与具体对象有关,类的继承中的重载、覆盖便是多态的体现。多态的必要条件:继承、重写、父类引用指向子类对象 重载:同名...
  • 提出了一种类级多态复杂性和系统级多态复杂性的度量方法。该方法对强制多态、重载多态、类型参数化多态和包含多态这四种类型的多态进行分析,得出反映...实验证明,该方法能够正确有效地度量面向对象软件的多态复杂性。
  • 面向对象多态概念理解

    千次阅读 2018-05-21 20:11:46
    1. 什么是多态一句话概括:父类对象引用子类变量 调用的是子类的实现例子:子类public class Chinese extends Person{ public void hello() { System.out.println("我是中国人"); } public void ...
  • C++语言基本语法中包含了面向对象的三大特性:封装,继承,多态。正是因为C++在语法层面上支持了这些面向对象特性,才使得大型项目会考虑用此语言来搭建平台或产品框架。其实也可以这样说,面向对象是相对于面向过程...
  • 面向对象三大特性之多态 一.多态的概念  多态是继封装,继承之后,面向对象的三大特性。  现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的张三同学既是学生也是人,即出现两种形态。  ...
  • Java面向对象 多态的好处

    千次阅读 2019-04-19 13:18:48
    多态的好处,建议参考一个百度回答: https://zhidao.baidu.com/question/217864684.html?hideOtherAnswer=true&newAnswer=1 例如一段代码: class Computer { public void turnOn() { } } class PC ...
  • 多态面向对象三大特征:封装、继承、多态。 在继承关系,是一种”is A”的关系,也就说子类是父类的一种特殊情况,有如下代码: public class Animal{} public class Dog extends Animal{} public class Cat ...
  • 你明白多态就明白这个问题了,给你举个例子吧:比如有个抽象类叫动物,他有“叫”的动作,继承他的类都是普通类,有猫、狗...各种动物,他们实现叫的方法都不同。现在有个需求:就是实现各种动物“叫”的动作,为了...
  • 面向对象多态和重载

    2012-10-28 22:26:59
    面向对象的世界里,多态与重载是初学者最难理解的问题之一,也是最容易混淆的两个概念。  一、多态  面向对象的设计原则中有一条里氏代换原则:父类出现的地方,子类一定可以出现,反之则不一定;多态即是这...
  • 多态允许将子类的对象当作基类的对象使用,某基类型的引用指向其子类型的对象,调用的方法是该子类型的方法。 这里引用和调用方法在代码编译前就已经决定了,而引用所指向的对象可以在运行期间动态绑定。再举个比较...
  • 多态的概述:多态是继封装、继承之后,面向对象的第三大特性。生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一样的。再比如飞的动作,昆虫、鸟类和飞机,飞起来也是不一样的。可见,同一行为,通过不同的事物...
  • 第三章 多态 一、编写父子类 1.多态是具有表现多种型生态的能力的特征,同一个实现接口,使用不同的实例而执行不同的操作 2.一个引用类型,使用不同的实例而执行不同操作。(父类引用子类对象) 使用多态的...
  • 提起面向对象,很自然地想到三大特性:封装、继承、多态。他们的目录分别是: 1. 封装,使代码模块化封装内部结构和状态。 2. 继承,用于扩展原有代码。 3. 多态,方便接口重用,通过同一接口和传入的对象调用...
  • 多态的体现:父类的引用指向了自己的子类对象。父亲的引用也可以接收自己的子类对象多态的前提:必须是类与类之间有关系,要么继承,要么实现。通常还有一个前提:存在覆盖。 多态的好处:提高了程序的可扩展行。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,005
精华内容 18,002
关键字:

面向对象多态