内容发布更新时间 : 2024/12/25 17:18:31星期一 下面是文章的全部内容请认真阅读。
实验报告
【实验名称】 第四章 接口和多态 【实验目的】
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); }
实验二: