Java实验报告4 接口和多态 下载本文

实验报告

【实验名称】 第四章 接口和多态 【实验目的】

1.学习Java中抽象类的概念 2.学习接口的概念

3.学习面向抽象的编程以及面向接口的编程

【实验原理】

1.Java程序设计基本原理 2.面向对象程序设计基本原理

【实验内容】

一、 结合本次课程,简答:

1、什么是上转型对象?调用子类方法原则? 将子类赋给父类时,称父类为子类的上转型对象。

方法原则:只能调用子类继承和重写的方法,不能调用子类中新的方法。

2、父类创建的对象和其子类的上转型对象异同? 相同点:都可以对父类里的方法进行调用。

不同点:上转型对象调用的父类方法只能是子类重写之后的,而父类创建的对象调用的是自身定义的。

3、为什么引入抽象类和抽象方法?

抽象类只关心操作,不关心操作具体实现细节,可以使程序员把精力集中在程序的设计上,而不必拘泥于细节的实现。也就是说设计者只需设计好方法,而具体方法实现由子类的设计者实现。减轻了程序员的负担。 4、接口和抽象类的异同?

相同点:二者都是需要背继承和实现后才有实际意义,并且二者都有抽象类型。

不同点:抽象类属于类,接口是一种新的数据类型;抽象类的属性可以是常量和变量,而接口中只能是常量;抽象类中可以有抽象方法和普通方法,而接口中只能是抽象方法;抽象类将其抽象方法的实现交给其子类,而接口将其抽象方法的实现交给实现该接口的类。 5、接口和类的异同?

相同点:接口和类都是数据类型;属性中都有常量,方法中都有抽象类方法。 不同点:类的属性是变量和常量,方法需要实现,而接口的属性只能是常量,方法只需声明;类中可以有抽象方法和普通方法,而接口中只能是抽象方法; 类的属性可以是常量和变量,而接口中只能是常量;类中可以有抽象方法和普通方法,而接口中只能是抽象方法。

二、程序设计

实验一:按要求完成程序

1. 设计一个抽象类People,具有抽象方法say();

2. 设计子类ChinaPeople,AmericaPeople,实现抽象方法say(); 两个类的say()方法,分别输出语句:我是中国人 ; 我是美国人 3. 设计一个Speak类,提供speaking(People p)方法,注意:其参数是抽象的People类型,Speaking方法中,要求以上转型对象参数p,调用say方法的内容;

4. 设计一个测试类Test,添加main函数,分别创建中国人和美国人,测试speak类的使用;

5.再增加一个子类AfricaPeople,实现抽象方法say();添加到测试类中。 代码:

abstract class People { }

class ChinaPeople extends People{ }

class AmericaPeople extends People{ }

class AfricaPeople extends People{ }

class speak{ }

public class test{

public static void main(String args[]){ void speaking(People p){ }

p.say();

void say(){System.out.println(\我是非洲人\void say(){System.out.println(\我是美国人\void say(){System.out.println(\我是中国人\abstract void say();

}

speak ss=new speak();

ChinaPeople wang=new ChinaPeople(); AmericaPeople scott=new AmericaPeople(); AfricaPeople nora=new AfricaPeople(); ss.speaking(wang); ss.speaking(scott); ss.speaking(nora); }

实验二: