栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

多态的练习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多态的练习

1.多态的概念

多态是面向对象程序设计(OOP)的一个重要特征,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。

在java中多态可以体现在方法上比如方法的重载,同名方法可以有不同的执行结果。多态也可以体现在面向对象中,一个对象可以使用多种类型进行表示。

面向方法层面的多态:就是方法重载

面向对象层面的多态:把子类的对象类型给了父类。

2.多态的特点
  1. 多态的前提1:是继承
  2. 多态的前提2:要有方法的重写
  3. 父类引用指向子类对象,如:Animal a = new Cat();
  4. 多态中调用成员方法时,编译看左边,运行看右边
3.多态的练习题

案例需求:开在Teacher教员类的基础上,开发一个类代表总部,负责对各教员进行评估,评估内容包括教员的自我介绍以及教员的授课。

教师:Teacher教员类(教员姓名, 所在中心属性;授课方法和自我介绍方法),其中教员分为Java教员以及.NET教员,各自的要求如下:

1.Java教员

具有属性:姓名、所在中心。

具有方法:

授课giveLesson()(授课的步骤依次是:打开Eclipse、实施理论课授课)、

自我介绍。introduction() (输出教员的姓名和所在中心,我是一名java讲师)

2.NET教员

具有属性:姓名、所在中心。

具有方法:

授课giveLesson()(授课的步骤依次是:打开Visual Studio 2005、实施理论课授课)、

自我介绍。introduction() (输出教员的姓名和所在中心,我是一名.net讲师)

                总部类: 负责对教员的评估,并进行测试

                      具有的方法: 评估教员的方法 judge() (先调用教员的授课方法,再调用教员的自我介绍方法)

父类
public class Humen {
    String name;
    String where;
    public void giveLesson(){

    }
    public void introduction(){}
}
net子类
public class Nettc extends Humen{
    public void introduction(){
        System.out.println(name+where+"我是一名net讲师");
    }
    public void giveLesson(){
        System.out.println("授课的步骤依次是:打开Visual Studio 2005、实施理论课授课");
    }
}

java子类

public class Javatc extends Humen{
    public void introduction(){
        System.out.println(name+where+"我是一名java讲师");
    }
    public void giveLesson(){
        System.out.println("授课的步骤依次是:打开Eclipse、实施理论课授课");
    }

 }

总部类
public class Teacher {
    public static void main(String[] args) {
        Humen javatc = new Javatc();
        javatc.name="赵峰";
        javatc.where="湖南湘潭";
        javatc.introduction();
        javatc.giveLesson();
        Humen nettc = new Nettc();
        nettc.name="郭寄";
        nettc.where="湖南山区";
        nettc.introduction();
        nettc.giveLesson();
    }
}

4.向上转型和向下转型

向上转型:可以把不同的子类对象都当作父类来看,进而屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,统一调用标准。

例如上面题中的:

Humen javatc = new Javatc();

Humen nettc = new Nettc();

父类类型   子类对象的名字=new 子类构造方法();

说明:向上转型时,子类对象当成父类对象,只能调用父类的功能,如果子类重写了父类中声明过的方法,方法体执行的就是子类重过后的功能。但是此时对象是把自己看做是父类类型的,所以其他资源使用的还是父类型的。

向下转型(较少):子类的引用的指向子类对象,过程中必须要采取到强制转型。这个是之前向上造型过的子类对象仍然想执行子类的特有功能,所以需要重新恢复成子类对象

例如:

Javatc  humen= new Humen();

子类类型  父类对象名字= new  父类构造方法;

说明:向下转型时,是为了方便使用子类的特殊方法,也就是说当子类方法做了功能拓展,就可以直接使用子类功能。

 常见多态代码体现在三个地方:
 * 1. 直接定义变量:父类型变量接收子类对象
 * 2. 方法参数:父类型的形参接收子类型的实参对象
 * 3. 返回值:父类型的返回值类型接收子类型的返回值对象 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1027760.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号