多态详解

打印 上一主题 下一主题

主题 721|帖子 721|积分 2163

1.多态的概念
    同一方法可以根据发送对象的不同而采用多种不同的行为方式一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(父类,有关系的类)
`
  1.     new Student();//new了一个对象则它的实际类型是确定的
  2.     new Person();
复制代码
`

当子类重写父类的方法之后就走的都是子类的方法如下图:

对象能执行哪些方法,主要看对象左边的类型,和右边关系不大,如下图

2.多态注意事项
    (1)多态是方法的多态,属性没有多态。
    (2)父类和子类有联系,若没有关系强制转换时会出现转换异常(ClassCastException)
    (3)存在与继承关系,且方法得重写,父类的引用指向子类对象
3.一些不能重写的方法
    (1)static方法,属于类,但不属于实例
    (2)final方法:常量
    (3)private方法
Application类方法代码:
点击查看代码
  1. package com.Tang.oop.demo06;
  2. public class Application {
  3.     public static void main(String[] args) {
  4.         //一个对象的实际类型是确定的
  5.         //new Student();
  6.         //new Person();
  7.         //可以指向的引用类型就不确定了
  8.         //Student能调用的方法都是自己的或者继承父类的
  9.         Student s1 = new Student();
  10.         //Person 为父类型,虽然可以指向子类但是不能调用子类独有的方法
  11.         Person s2 = new Student();//父类的引用指向子类
  12.         Object s3 = new Student();
  13.         //对象能执行哪些方法,主要看对象左边的类型,与右边关系不大
  14.         s2.tea();
  15.         s1.tea();
  16.         //s2.run();//子类重写父类方法,则执行子类的方法
  17.         //s1.run();
  18.     }
  19. }
复制代码
Student类方法代码:点击查看代码
  1. package com.Tang.oop.demo06;
  2. public class Student extends Person{
  3.     @Override
  4.     public void run() {
  5.         System.out.println("son");
  6.     }
  7.     public void tea(){
  8.         System.out.println("chifan");
  9.     }
  10. }
复制代码
Person类方法代码:点击查看代码
  1. package com.Tang.oop.demo06;
  2. public class Person {
  3.     public void run(){
  4.         System.out.println("run");
  5.     }
  6. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

祗疼妳一个

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表