多态

标签: javaweb
2人阅读 评论(0) 收藏 举报
分类:




1 多态
  (1)方法的多态性
    ~方法的重载:同一个方法名称可以根据参数的类型及个数的不同调用不同的方法体
    ~方法的覆写:同一个父类的方法可能根据实例化的子类的不同的实现。
  (2)对象的多态性(前提:方法覆写)
    ~对象的向上转型:父类  父类对象=子类实例;
    ~对象的向下转型:子类   子类对象=(子类)父类实例
    示例:向上转型
    package 多态;
  
   class A{
  
  public void print() {
  System.out.println("A的pritn方法");
  
}
 
  
   }
   
   class B extends A{
  public void print() {
  System.out.println("B的pritn方法");
  
}
 
  
   }


public class Test {
public static void main(String[] args) {
A a=new B();
a.print();//这是调用B的print方法,因为是new B(),



}


}


    注意:当你使用到子类扩充操作的时候用到向下转型
    示例:
    package 多态;
  
   class A{
  
  public void print() {
  System.out.println("A的pritn方法");
  
}
 
  
   }
   
   class B extends A{
  public void print() {
  System.out.println("B的pritn方法");
  
}
  public void funB() {
  System.out.println("B的funB方法");
  
  
  }
 
  
   }


public class Test {
public static void main(String[] args) {
A a=new B();
a.print();//这是调用B的print方法,因为是new B(),
        //这时候父类中没有子类中的funB方法,这时候用向下转型处理
B b=(B) a;
b.funB();

}


}


    结果:
B的pritn方法
B的funB方法
    
    注意:向下转型可能会出现隐患,所以可以依靠instanceof来进行判断实现,它返回的是一个bool类型。


package 多态;
  
   class A{
  
  public void print() {
  System.out.println("A的pritn方法");
  
}
 
  
   }
   
   class B extends A{
  public void print() {
  System.out.println("B的pritn方法");
  
}
  public void funB() {
  System.out.println("B的funB方法");
  
  
  }
 
  
   }


public class Test {
public static void main(String[] args) {
A a=new B();
System.out.println(a instanceof A);
System.out.println(a instanceof B);
if(a instanceof B) {
B b=(B) a;
b.funB();

}

}


     

}


结果:
true
true
B的funB方法






示例:要求定义一个方法,这个方法可以接收Person类的所有子类实例,并调用Person类的方法。


示例:
package 多态;
  
   class Person{
  
  public void eat() {
  System.out.println("吃饭");
  
}
 
  
   }
   
   class Student extends Person{
  public void eat() {
  System.out.println("Student1吃饭");
  
}
 
  
   }
   
   class Worker extends Person{
  public void eat() {
  System.out.println("Worker2吃饭");
  
}
 
  
   }


public class Test {
public static void main(String[] args) {
in(new Student());
in(new Worker());
}
       public static void in(Person per) {
      per.eat();
      
       }
     

}


结果:
Student1吃饭
Worker2吃饭




总结:对象多态性的实现在于方法的覆写
     两个没有关系 的类对象是不能够转型的




查看评论

Java核心技术 第一章 接口、继承与多态

课程主要包含: 第一讲 类的继承 第二讲 Object类 第三讲 对象类型的转换 第四讲 方法的重载 第五讲 方法的重写 第六讲 多态 第七讲 抽象类和接口
  • 2017年05月02日 11:37

909422229__编译时多态与运行时多态

最近听伙伴面试问多态的问题,于是本人加上百度与个人理解,现在上传一些个人的理解多态。不喜勿喷 多态概念:父类的引用可以指向子类的对象,且可以调用子类中覆盖父类的方法,但不可以调用子类特有的方法...
  • a909422229
  • a909422229
  • 2016-11-26 14:59:33
  • 406

参数多态、包含多态、过载多态和强制多态

多态分为两种:通用的多态和特定的多态。两者的区别是前者对工作的类型不加限制,允许对不同类型的值执行相同的代码;后者只对有限数量的类型有效,而且对不同类型的值可能要执行不同的代码。     通用多态又分...
  • u013046774
  • u013046774
  • 2015-11-02 09:11:15
  • 3403

静态多态和动态多态

面向对象编程的多态从绑定时间来看,可以分成静态多态和动态多态,也称为编译期多态和运行期多态。 应用形式上: 静多态是发散式的,让相同的实现代码应用于不同的场合。 动多态是收敛式的,让...
  • John_62
  • John_62
  • 2017-03-16 16:08:57
  • 874

通用多态(参数多态、包含多态)特定多态(重载多态、强制多态)

1. 通用多态 a.参数多态:模板。 b.包含多态:virtual。 2. 特定多态 a.重载多态: b.强制多态:强制类型转换。...
  • ZeroCBoy
  • ZeroCBoy
  • 2016-06-05 00:33:25
  • 734

动态多态以及多态调用过程

多态分为静态多态与动态多态。静态多态包括函数重载,泛型编程。动态是虚函数的使用。         静态多态是指编译器在编译期间完成的,编译器根据函数实参的类型(可能会进行隐式类型转换),可推断出要调用...
  • gmy2016wiw
  • gmy2016wiw
  • 2017-02-26 15:07:22
  • 647

多态与泛型

1.多态的理解和使用: 多态自我理解就是同种调用的不同结果表现 1) 方法的多态性:包括重载和重写(其实重写就是为了下面类之间继承的多态) 2)类之间继承的多态 重载和重写已经在之前的文章中学习过了,...
  • Jintao_Ma
  • Jintao_Ma
  • 2016-04-01 15:52:10
  • 1011

C++多态简析——静态多态与动态多态

多态:顾名思义,多态就是多种形态,也就是对不同对象发送同一个消息,不同对象会做出不同的响应。并且多态分为静态多态和动态多态。静态多态就是在系统编译期间就可以确定程序执行到这里将要执行哪个函数,例如:函...
  • stay_the_course
  • stay_the_course
  • 2017-02-16 16:01:54
  • 2445

区分多态和重载

多态是基于对抽象方法的覆盖来实现的,用统一的对外接口来完成不同的功能。重载也是用统一的对外接口来完成不同的功能。那么两者有什么区别呢?重载,是指允许存在多个同名方法,而这些方法的参数不同。重载的实现是...
  • weigb
  • weigb
  • 2007-11-02 22:31:00
  • 24456

多态的使用和概述以及弊端和好处

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...
  • qq_28483283
  • qq_28483283
  • 2016-03-10 21:44:16
  • 3646
    个人资料
    持之以恒
    等级:
    访问量: 1028
    积分: 626
    排名: 8万+
    文章分类
    文章存档