实验6继承与接口

合集下载

实验6

实验6

1)设计名为Inter的接口,接口中定义一个初始值为20的num常量和method()抽象方法。

2)编写Inter接口的实现类InterImpl,使用implements关键字实现接口中的方法。

3)编写测试类Example10,测试类中对接口的实现类进行实例化,并调用接口中的方法。

package aa1;interface Inter1{int num=20;void method();}interface InterImpl extends Inter {void Soug();}abstract class Soog implements InterImpl{public void method(){System.out.println("搜狗");}public void Soug(){System.out.println("搜索文章");}}class Soog1 extends Soog{public void method(){System.out.println("搜狗");}}public class Example10 {public static void main(String[] args) {Soog1 soog=new Soog1();soog.method();soog.Soug();// TODO自动生成的方法存根}}结果:搜狗搜索文章1)设计接口Phone代表传统手机,在接口中定义receiveMessages()和call()抽象方法。

2)设计接口SmartPhone代表智能手机,在接口中定义faceTime()方法,并使用extends关键字继承Phone接口,使其具有Phone接口的所有功能。

3)设计类MIPhone表示小米手机,类中定义useMIUI()方法,并实现SmartPhone 接口的所有方法。

实验6 继承与接口

实验6  继承与接口

实验报告姓名学号专业班级课程名称 Java实验实验日期成绩指导教师批改日期实验名称实验 6 继承与接口[实验目的]1、掌握java 继承中父类及其子类的定义方法。

2、掌握子类重写父类同名方法的方法。

3、掌握接口的用法。

(1) 学习如何定义接口 ;(2) 掌握接口的实现方式 ;(3) 使用实现了接口的类 ;(4) 理解接口与抽象类的区别。

[实验要求]1、复习理论教学中所学的内容。

2、认真进行实验预习,查阅参考书,书写源程序,书写实验预习报告。

3、认真总结实验并书写实验报告。

[实验内容]1、类的继承性练习(1) 程序源代码如下。

public class Student{protected String xm; //姓名,具有保护修饰符的成员变量protected int xh;//学号void setdata(String xm,int xh) //设置数据的方法{this.xm=xm;this.xh=xh;}public void print() //输出数据的方法{System.out.println(xm+", "+xh);}}import java.util.*;public class Exe_1 extends Student{public Exe_1(){};public static void main(String[] args) {Scanner input=new Scanner(System.in);Exe_1 text=new Exe_1();System.out.println("请输入姓名和学号:");text.setdata(input.next(), input.nextInt());System.out.println("显示如下:");text.print();}}(2) 编译源并运行程序。

贴图如下(二)创建将被继承的类(1) 程序功能:通过Student类产生子类CollegeStudent,其不仅具有父类的成员变量xm(姓名)、xh(学号),还定义了新成员变量xy(学院)、bj(bj)。

java实验报告——继承与接口

java实验报告——继承与接口

System.out.print('\t'+"平均分");
System.out.println('\t'+"成绩等级");
for(int i=0; i<pg.length;i++) {
System.out.print(pg[i].Name); System.out.print('\t'+pg[i].Stu_type); System.out.print('\t'+String.valueOf(pg[i].C_score)); System.out.print('\t'+String.valueOf(pg[i].English_score)); System.out.print('\t'+String.valueOf(pg[i].Java_score)); System.out.print('\t'+String.valueOf(pg[i].score)); System.out.println('\t'+pg[i].sco_Level); } System.out.println(); } }
String Name=""; String Stu_type=""; int C_score; int English_score; int Java_score; int score; // String sco_Level=""; Sco_Level sco_Level;
public Student(String name,String stu_type,int sco1,int sco2,int sco3) {

java实验报告 类的继承

java实验报告 类的继承

java实验报告类的继承一、实验目的1、深入理解 Java 中类的继承概念和机制。

2、掌握通过继承实现代码复用和功能扩展。

3、学会使用 super 关键字和方法重写。

二、实验环境1、操作系统:Windows 102、开发工具:Eclipse 或 IntelliJ IDEA三、实验内容1、创建一个父类`Animal`包含属性:`name`(字符串类型),`age`(整数类型)包含方法:`eat()`(打印出动物正在吃东西),`sleep()`(打印出动物正在睡觉)2、创建子类`Dog` 继承自`Animal`新增属性:`breed`(字符串类型,表示狗的品种)重写父类的`eat()`方法,打印出狗吃东西的特有方式新增方法:`bark()`(打印出狗在叫)3、创建子类`Cat` 继承自`Animal`新增属性:`color`(字符串类型,表示猫的颜色)重写父类的`sleep()`方法,打印出猫睡觉的特有姿势新增方法:`meow()`(打印出猫在叫)四、实验步骤1、在 Java 项目中创建一个名为`Animal` 的类:```javapublic class Animal {private String name;private int age;public Animal(String name, int age) {thisname = name;thisage = age;}public void eat(){Systemoutprintln(name +" is eating");}public void sleep(){Systemoutprintln(name +" is sleeping");}}```2、创建一个名为`Dog` 的类继承自`Animal`:```javapublic class Dog extends Animal {private String breed;public Dog(String name, int age, String breed) {super(name, age);thisbreed = breed;}@Overridepublic void eat(){Systemoutprintln(supergetName()+" the "+ breed +" dog is eating greedily");}public void bark(){}}```3、创建一个名为`Cat` 的类继承自`Animal`:```javapublic class Cat extends Animal {private String color;public Cat(String name, int age, String color) {super(name, age);thiscolor = color;}@Overridepublic void sleep(){Systemoutprintln(supergetName()+" the "+ color +" cat is sleeping curled up");}public void meow(){}}```4、在`Main` 类中进行测试:```javapublic class Main {public static void main(String args) {Dog dog = new Dog("Buddy", 3, "Labrador");dogeat();dogbark();dogsleep();Cat cat = new Cat("Mimi", 2, "White");cateat();catsleep();catmeow();}}```五、实验结果1、运行`Main` 类后,输出结果如下:`Buddy the Labrador dog is eating greedily``Buddy is barking``Buddy is sleeping``Mimi is eating``Mimi the White cat is sleeping curled up``Mimi is meowing`2、可以看到,子类`Dog` 重写了父类`Animal` 的`eat()`方法,展示了狗特有的吃东西方式;子类`Cat` 重写了父类的`sleep()`方法,展示了猫特有的睡觉姿势。

JAVA标准实验报告张俊怡

JAVA标准实验报告张俊怡

东北大学软件学院《JA V A语言程序设计》课程标准实验报告(面向过程)专业:软件工程班级:1405学号:20144706姓名:张俊怡完成时间:2015/5/10指导教师:邓卓夫评定成绩:实验一Java类和对象一、实验目的(1)掌握JDK的安装步骤,理解环境变量PATH, CLASSPATH的作用,以及它们的设置方法。

掌握如何在命令行下编译和运行Java程序,掌握Editplus编辑器的使用方法。

(2)通过编程和上机实验理解Java 语言如何体现面向对象编程基本思想,了解类的封装方法,以及如何创建类和对象,掌握对象和对象引用之间的关系,了解成员变量和成员方法的特性,掌握数组的定义方法,掌握类构造方法的定义和构造方法的使用,掌握OOP 方式进行程序设计。

(3)了解并掌握Java里边的基本语法和基本语法的用法,熟悉常用关键字,能够顺利将c语言中的知识过渡到Java中,真正能够运用Java,领会面向对象的内涵。

二、实验内容与要求1. 安装开发环境JDK,掌握eclipse的使用方法,编写出第一个Java程序。

2..编写35选7的彩票程序,随机产生7个1-35之间的中奖号码,产生的7个号码应保证互不相同,采用冒泡排序将7个号码排序,从键盘输入7个1-35之间的号码(必须为整数),输入的7个号码要保证互不相同,将用户输入的号码与中奖号码进行比较,判断有几个号码相同,根据中奖号码的个数,判断用户中了几等奖。

要求(这是对Java基本语法的练习),通过这个案例掌握Java语言设计的基本语法三、实验过程(包括代码的编写以及代码的调试)JDK开发环境的设置(1)下载好eclipse(2)设置环境变量PATH和CLASSPA TH:(3)并且在设置好环境变量后学会如何建立工程和类,编写出第一个Java程序(4)编写彩票程序时,先声明两个数组,然后利用随机数生成7个不相同的随机数,然后排序,然后在从键盘终端输入7个数字,进行比较中了对少个数字,最后通过switch判断中了什么奖。

Java实验报告继承、多态、接口和异常处理

Java实验报告继承、多态、接口和异常处理

Java实验报告继承、多态、接⼝和异常处理实验5 继承、多态、接⼝和异常处理⼀、实验⽬的1、掌握Java的类和对象的声明和使⽤⽅法;2、掌握Java的类的继承和实现⽅法;3、掌握多态性在类的继承中的运⽤;4、掌握接⼝的定义与使⽤;5、掌握基本异常的处理机制;6、熟悉try语句与catch语句的搭配使⽤;7、了解有异常处理与没有异常处理的差别;8、多重catch语句的使⽤;9、使⽤Throws声明异常和Throw抛出异常。

⼆、实验环境1、PC微机;2、DOS操作系统或 Windows 操作系统;3、Java sdk程序开发环境、eclipse集成环境。

三、实验内容1. 设计三个类,分别是学⽣类Student,本科⽣类UnderGraduate,研究⽣类Postjgraduate,其中Student类是⼀个抽象类,它包含学⽣的基本信息如姓名、所学课程、课程成绩等,⽽Undergraduate类和Postgraduate类都是Student类的⼦类,这两个类计算课程成绩等级的⽅法有所不同,如下表所⽰。

假设某班级⾥既有研究⽣⼜有本科⽣,编写程序统计出全班学⽣2. 和Mobilephone具体实现,并设计⼀个应⽤程序类来使⽤这些类。

3.要求设计⼀个GUI图形窗⼝程序,该程序让⽤户输⼊⼀个星期中的任意⼀天的数字1-7,然后输出该数字所对应的是星期⼏。

四、实验步骤实验内容⼀1.建⽴package experiment5_1,其最终⽬录结构如下:2.建⽴Student类:package experiment5_1;public abstract class Student {final static int CourseNo = 3;String name;String type;int[] courses;String courseGrade;public Student(String name) {/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html = name; courses = new int[CourseNo];courseGrade = "" ;}public abstract void calculateGrade();public String getName( ) {return name;}public String getType( ) {return type ;}public String getCourseGrade( ) {return courseGrade;}public int getCourseScore(int courseNumber) {return courses[courseNumber];}public void setName(String name) {/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html = name;}public void setType(String type) {this.type = type;}public void setCourseScore(int courseNumber, int courseScore) { //按课程索引号设置课程成绩this.courses[courseNumber] = courseScore ;}}3.建⽴外部类(1)研究⽣类Postjgraduatepackage experiment5_1;public class postgraduate extends Student {public postgraduate(String name) {super(name);type = "研究⽣";}public void calculateGrade() {// TODO Auto-generated method stubint total = 0;double average = 0;for (int i = 0; i < CourseNo; i++) {total += courses[i];};average = total / CourseNo;if (average>=90&&average<100) courseGrade = "优秀"; else if (average>=80&&average<90) courseGrade = "良好"; else if (average>=70&&average<80) courseGrade = "⼀般"; else if (average>=60&&average<70) courseGrade = "及格"; else courseGrade = "不及格";}}(2)本科⽣类UnderGraduatepackage experiment5_1;public class undergraduate extends Student {public undergraduate(String name ) {super(name);type = "本科⽣";}public void calculateGrade() {int total = 0;double average = 0;for (int i = 0; i < CourseNo; i++) {total += getCourseScore(i) ;};average = total / CourseNo;if (average>=80&&average<100) courseGrade = "优秀"; else if (average>=70&&average<80) courseGrade = "良好"; else if (average>=60&&average<70) courseGrade = "⼀般"; else if (average>=50&&average<60) courseGrade = "及格"; else courseGrade = "不及格";}}4.编写代码测试函数package experiment5_1;public class polymorphism {public static void main(String[] args) {Student[] students = new Student[5];students[0] = new undergraduate("陈建平");students[1] = new undergraduate("鲁向东");students[2] = new postgraduate("匡晓华");students[3] = new undergraduate("周丽娜");students[4] = new postgraduate("梁欣欣");for (int i=0; i<5 ;i++) {students[i].setCourseScore(0,87);students[i].setCourseScore(1,90);students[i].setCourseScore(2,78);}for (int i=0; i<5 ;i++) {students[i].calculateGrade();}System.out.println("姓名" + " 类型" +" 成绩");System.out.println("-----------------------");for (int i=0; i<5 ;i++) {System.out.println(students[i].getName( )+" "+students[i].getType( )+" "+students[i].getCourseGrade( ));}}}实验内容⼆1.建⽴package experiment5_2,其最终⽬录结构如下:2.写接⼝Soundable代码:package experiment5_2;public interface Soundable {public void increaseV olume( );public void decreaseV olume( );public void stopSound( );public void playSound( );}3.创建三个类Radio、Walkman和Mobilephone具体实现,分别添加代码:// Mobilephone类package experiment5_2;class Mobilephone implements Soundable{public void increaseV olume( ) {System.out.println("增⼤⼿机⾳量");}public void decreaseV olume( ) {System.out.println("减⼩⼿机⾳量");}public void stopSound( ) {System.out.println("关闭⼿机");}public void playSound( ) {System.out.println("⼿机发出来电铃声");}}// Walkman类package experiment5_2;class Walkman implements Soundable { public void increaseV olume( ) { System.out.println("增⼤随声听⾳量"); }public void decreaseV olume( ) { System.out.println("减⼩随声听⾳量"); }public void stopSound( ) {System.out.println("关闭随声听");}public void playSound( ) {System.out.println("随声听发出⾳乐"); }}// Radio类package experiment5_2;class Radio implements Soundable{ public void increaseV olume( ) { System.out.println("增⼤收⾳机⾳量"); }public void decreaseV olume( ) { System.out.println("减⼩收⾳机⾳量"); }public void stopSound( ) {System.out.println("关闭收⾳机");}public void playSound( ) {System.out.println("收⾳机播放⼴播"); }}4.创建people类及编写测试代码://People类package experiment5_2;class People {public void listen(Soundable s) {s.playSound( );}}//测试代码package experiment5_2;import java.util.Scanner;public class InterfaceTest {public static void main(String[] args) {int i;People sportsman = new People( );Scanner scanner = new Scanner(System.in);Soundable[] soundDevice = new Soundable[3];//往声⾳设备数组中放⼊能发声的设备soundDevice[0] = new Radio( );soundDevice[1] = new Walkman( );soundDevice[2] = new Mobilephone();System.out.println("你想听什么? 请输⼊选择:0-收⾳机1-随声听2-⼿机");i = scanner.nextInt( );//开始听声⾳sportsman.listen(soundDevice[i]);soundDevice[i].increaseV olume( );soundDevice[i].stopSound();scanner.close();}}实验内容三1.建⽴package experiment5_3,其最终⽬录结构如下package experiment5_3;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class DateTransf extends JFrame implements KeyListener{/****/private static final long serialVersionUID = 1L;private static DateTransf frm;private static JTextField txt;private static JTextField data;DateTransf() {setTitle("数字与星期转换");setLocation(700, 300);setSize(400,130);}public static void main(String[] args) {frm = new DateTransf();frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frm.setLayout(new GridLayout(2,2));txt = new JTextField(12);data = new JTextField(12);JLabel lable1 = new JLabel("输⼊数字:");JLabel lable2 = new JLabel("星期⼏:");frm.add(lable1);txt.addKeyListener(frm);frm.add(txt);frm.add(lable2);frm.add(data);frm.setVisible(true);}public void keyPressed(KeyEvent e) {if (e.getSource() == txt) {if (e.getKeyCode() == KeyEvent.VK_ENTER) // 判断按下的键是否是回车键{try {int number = Integer.parseInt(txt.getText());switch (number) {case 1:data.setText("Mon");break;case 2:data.setText("Tue");break;case 3:data.setText("Wen");break;case 4:data.setText("Thu");break;case 5:data.setText("Fri");break;case 6:data.setText("Sat");break;case 7:data.setText("Sun");break;default:JOptionPane.showMessageDialog(null, "您输⼊的数字不是1~7","⽆效⽇期",/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html RMATION_MESSAGE); break;}}catch (Exception e1) {// TODO: handle exceptionJOptionPane.showMessageDialog(null, "您输⼊的不是整数","⽆效⽇期",/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html RMA TION_MESSAGE); }}}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}}2.编译运⾏五、实验结果●实验内容⼀结果:●实验内容⼆结果:●实验内容三结果:六、实验⼩结1.这次实验的内容⽐较多,需要掌握Java的类和对象的声明和使⽤⽅法、Java的类的继承和实现⽅法、多态性在类的继承中的运⽤、接⼝的定义与使⽤、基本异常的处理机制、try语句与catch语句的搭配使⽤等等;2. 在实验过程中,重点是要区分好实例和类,灵活掌握类的调⽤。

java类的继承实验报告

java类的继承实验报告

java类的继承实验报告Java类的继承实验报告引言:在面向对象的编程语言中,继承是一种重要的概念。

Java作为一门面向对象的编程语言,也支持类的继承。

本篇实验报告将介绍Java类的继承的基本概念、语法以及实际应用。

一、继承的基本概念继承是指一个类可以派生出另一个类,被派生出的类称为子类,派生出子类的类称为父类。

子类可以继承父类的属性和方法,并且可以在此基础上进行扩展或修改。

继承的关系可以形成类的层次结构,使得代码的复用性和可维护性得到提高。

二、继承的语法在Java中,使用关键字"extends"来实现类的继承关系。

子类通过继承父类来获得父类的属性和方法。

语法格式如下:```javaclass 子类名 extends 父类名 {// 子类的成员变量和方法}```在子类中可以重写父类的方法,以实现自己的逻辑。

使用关键字"super"可以调用父类的构造方法和成员变量。

三、继承的实际应用1. 代码复用继承的一个主要优势是可以实现代码的复用。

子类可以继承父类的属性和方法,避免了重复编写相同的代码。

例如,假设有一个父类"Animal",子类"Dog"和"Cat"可以继承父类的一些通用属性和方法,如"eat()"和"sleep()"。

2. 多态性继承也为多态性的实现提供了基础。

多态性是指一个对象可以根据不同的类型表现出不同的行为。

通过继承,可以将不同的子类对象赋给父类引用,实现对不同子类对象的统一操作。

例如,有一个父类"Shape",子类"Circle"和"Rectangle"可以继承父类的方法"draw()",并在自己的类中实现具体的绘制逻辑。

通过将子类对象赋给父类引用,可以统一调用"draw()"方法,实现对不同形状的绘制。

接口用法示例实验报告(3篇)

接口用法示例实验报告(3篇)

第1篇一、实验目的1. 理解接口的概念和作用。

2. 掌握接口的基本用法,包括接口的定义、实现和实现类。

3. 通过实际操作,加深对接口的理解和应用。

二、实验环境1. 操作系统:Windows 102. 开发工具:IntelliJ IDEA3. 编程语言:Java三、实验内容1. 接口的基本概念2. 接口的定义与实现3. 接口的多态性4. 接口的应用示例四、实验步骤1. 接口的基本概念(1)打开IntelliJ IDEA,创建一个新的Java项目。

(2)在项目下创建一个包,命名为“com.example”,用于存放实验代码。

(3)在包下创建一个接口,命名为“IAnimal”,用于定义动物的基本行为。

```package com.example;public interface IAnimal {void eat();void sleep();}```2. 接口的定义与实现(1)在“com.example”包下创建一个类,命名为“Dog”,实现“IAnimal”接口。

```package com.example;public class Dog implements IAnimal {@Overridepublic void eat() {System.out.println("狗吃肉");}@Overridepublic void sleep() {System.out.println("狗睡觉");}}```(2)在“com.example”包下创建另一个类,命名为“Cat”,实现“IAnimal”接口。

```package com.example;public class Cat implements IAnimal {@Overridepublic void eat() {System.out.println("猫吃鱼");}@Overridepublic void sleep() {System.out.println("猫睡觉");}}```3. 接口的多态性(1)在主类“Main”中创建一个方法,用于测试接口的多态性。

实验六:——精选推荐

实验六:——精选推荐

实验六:实验六:接⼝与多态1.实验⽬的(1)理解接⼝的概念、特点与作⽤,掌握接⼝的定义与实现⽅法(2)理解接⼝与抽象类的区别,并会熟练应⽤(3)理解塑型的概念,掌握对象塑型的⽅法(4)理解多态的概念及其使⽤⽅法(5)掌握构造⽅法的调⽤顺序(6)理解内部类的概念,了解其基本的⽤法2.实验内容(1) 定义⼀个接⼝ClassName,接⼝中只有⼀个抽象⽅法getClassName( )。

设计⼀个类Horse,该类实现接⼝ClassName中的⽅法getClassName( ),功能是获取该类的类名。

编写应⽤程序使⽤Horse类。

(2) 定义接⼝MyInterface,接⼝中只有⼀个名为area的⽅法,该⽅法有⼀个double类型参数,返回类型也为double。

编写⼀个类实现接⼝MyInterface,接⼝中area⽅法的实现是返回参数的⽴⽅值;在应⽤程序中调⽤该⽅法并输出其结果。

(3) 定义⼀个Soundable接⼝,该接⼝具有播放声⾳、关闭声⾳、增⼤⾳量、减⼩⾳量等功能。

Soundable接⼝的这些功能分别由收⾳机Radio、随⾝听Walkman和⼿机MobilePhone实现。

另外设计⼀个Person类,具有姓名和年龄两个属性以及⼀个听⾳乐的⽅法listen(Soundable)。

最后设计⼀个测试类使⽤这些实现了Soundable接⼝的声⾳设备类。

程序运⾏时,先询问⽤户想听哪种设备,然后程序会按照该设备的⼯作⽅式发出声⾳、调节⾳量、关闭声⾳。

分析运⾏结果,并解释这是什么特性。

(4) 声明A类,其中有⼀个⽆参构造⽅法;声明类B,并定义其⽆参构造⽅法;声明A类的⼦类C,其有⼀成员是B类的⼀个对象,定义其构造⽅法。

定义测试类创建C类的对象,观察程序的运⾏结果,并分析原因。

(5) 声明⼀个接⼝,此接⼝⾄少具有⼀个⽅法;定义⼀个类,其中有⼀个⽅法,该⽅法中声明内部类实现此接⼝,并返回此接⼝的引⽤。

(6) 声明⼀个具有内部类的类,此内部类只有⼀个⾮默认的构造⽅法;声明另外⼀个具有内部类的类,此内部类继承第⼀个内部类。

java类的继承实验报告

java类的继承实验报告

java类的继承实验报告Java类的继承实验报告引言:在面向对象的编程语言中,继承是一种重要的概念。

Java作为一种面向对象的编程语言,也提供了类的继承机制。

本实验旨在通过编写Java程序,深入理解和掌握Java类的继承。

实验目的:1. 理解继承的概念和原理;2. 掌握Java中类的继承的语法和用法;3. 实践继承的实际应用。

实验过程:1. 创建父类和子类在实验中,我们首先创建一个父类和一个子类。

父类可以是一个基本的类,子类则继承了父类的属性和方法。

这样,子类就可以在不改变父类的基础上,扩展自己的功能。

2. 继承的语法和用法Java中,使用关键字"extends"来实现类的继承。

子类通过继承父类,可以获得父类的属性和方法,并且可以在子类中添加新的属性和方法。

在实验中,我们可以通过创建子类对象,并调用继承自父类的方法来验证继承的正确性。

3. 方法的重写在继承中,子类可以重写父类的方法。

这样,当子类调用该方法时,实际上执行的是子类重写后的方法。

通过方法的重写,我们可以实现多态性的效果。

4. 实际应用在实验中,我们可以选择一个具体的应用场景,例如动物类的继承。

我们可以创建一个父类Animal,包含基本的属性和方法,然后创建子类Dog和Cat,分别继承Animal类,并添加自己的特有属性和方法。

通过这个实例,我们可以更好地理解继承的实际应用。

实验结果:通过实验,我们成功地创建了父类和子类,并验证了继承的正确性。

我们还成功地重写了父类的方法,实现了多态性的效果。

最后,我们还通过实际应用的例子,更好地理解了继承的实际应用。

实验总结:通过本次实验,我们深入理解和掌握了Java类的继承。

继承是面向对象编程中的重要概念,通过继承,我们可以实现代码的重用和扩展。

在实际应用中,继承也可以帮助我们更好地组织代码,提高代码的可读性和可维护性。

然而,继承也有一些限制和注意事项。

首先,Java中只支持单继承,即一个子类只能继承一个父类。

JAVA第六次实验报告 接口

JAVA第六次实验报告 接口
for(int i=0;i<count;i++){
for(int j=i;j<count;j++){
if(x[j]<x[i]){
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
}
}
for(int i=1;i<count-1;i++){
aver=aver+x[i];
}
if(count>2)
return 2.67;
}
}
class WashMachine implements ComputerWeight{
public double computerWeight(){
return 13.8;
}
}
class Truck{
ComputerWeight []goods;
double totalWeights=0;
(3)编写若干个实现DogState接口的类,负责刻画小狗的各种状态。
(4)编写主类,在主类中实现测试小狗的各种状态。
2、程序代码
interface DogState{
public void showState();
}
class SoftlyState implements DogState{
public void showState(){
5、实验练习
请在实验基础上再编写一个实现ComputerWeight接口的类,比如Refrigerrator。这样一来,货车装载的货物中就可以有Refrigerrator类型的对象。当系统增加一个实现ComputerWeight接口的类后,Truck类需要进行修改吗?

JAVA第六次实验报告 接口

JAVA第六次实验报告 接口
double b[]={89,56,78,90,100,77,56,45,36,79,98};
ComputerAverage computer;
computer=new Gymnastics();
double result=computer.average(a);//computer调用average(double x[])方法,将数组a传递给参数x
public double average(double x[]);
}
class Gymnastics implements ComputerAverage{
public double average(double x[]){
int count=x.length;
double aver=0,temp=0;
(3)编写若干个实现DogState接口的类,负责刻画小狗的各种状态。
(4)编写主类,在主类中实现测试小狗的各种状态。
2、程序代码
interface DogState{
public void showState();
}
class SoftlyState implements DogState{
public void showState(){
Dog yellowDog=new Dog();
System.out.print("狗在主人面前:");
yellowDog.setState(new SoftlyState());
yellowDog.show();
System.out.print("狗遇到敌人:");
yellowDog.setState(new MeetEnemyState());

继承与派生实验报告

继承与派生实验报告

继承与派生实验报告继承与派生实验报告引言:继承与派生是面向对象编程中的重要概念,通过继承,一个类可以派生出子类,从而实现代码的复用和扩展。

本文将通过实验来探讨继承与派生的概念、原理和应用。

实验目的:1. 理解继承与派生的概念和原理;2. 掌握如何在编程语言中实现继承和派生;3. 熟悉继承与派生的应用场景。

实验步骤:1. 创建父类:首先,我们创建一个名为"Animal"的父类,该类具有属性和方法,例如"age"和"eat()"。

2. 创建子类:接下来,我们创建一个名为"Cat"的子类,该类继承自"Animal"类。

在子类中,我们可以重写父类的方法或添加新的方法。

3. 实例化对象:通过实例化父类和子类的对象,我们可以调用它们的方法和访问它们的属性。

4. 测试继承与派生:我们可以通过调用父类和子类的方法,观察它们的行为是否符合预期。

实验结果:在创建父类"Animal"时,我们定义了一个"age"属性和一个"eat()"方法。

在创建子类"Cat"时,我们继承了父类的属性和方法,并添加了一个新的"meow()"方法。

在实例化父类对象时,我们可以通过调用"eat()"方法来模拟动物进食的行为。

而在实例化子类对象时,我们既可以调用从父类继承而来的"eat()"方法,也可以调用子类特有的"meow()"方法来模拟猫咪的叫声。

通过实验,我们发现继承与派生的优势在于代码的复用和扩展。

我们只需在父类中定义一次通用的属性和方法,然后让不同的子类继承父类,即可实现代码的复用。

同时,子类还可以通过重写父类的方法或添加新的方法,实现代码的扩展和个性化。

讨论与应用:继承与派生不仅仅局限于上述的父类和子类关系,它还可以在多层次的继承结构中发挥作用。

子类的继承实验报告

子类的继承实验报告

#### 一、实验目的1. 理解Java中类的继承机制。

2. 掌握子类继承父类属性和方法的基本方法。

3. 熟悉方法覆盖(重写)和构造函数的继承。

4. 了解多态的概念及其在继承中的应用。

#### 二、实验环境1. 开发工具:Eclipse IDE2. 编程语言:Java3. 操作系统:Windows 10#### 三、实验内容本次实验主要围绕以下几个内容展开:1. 创建一个父类`Animal`,包含基本属性和方法。

2. 创建几个子类,如`Dog`、`Cat`等,继承自`Animal`类。

3. 在子类中重写父类的方法,以展示多态性。

4. 创建一个测试类,测试父类和子类的方法调用。

#### 四、实验步骤1. 创建父类`Animal`:```javapublic class Animal {private String name;private int age;public Animal(String name, int age) { = name;this.age = age;}public void eat() {System.out.println(name + " is eating."); }public void sleep() {System.out.println(name + " is sleeping."); }public String getName() {return name;}public int getAge() {return age;}}```2. 创建子类`Dog`:```javapublic class Dog extends Animal {public Dog(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println(getName() + " is eating bones.");}@Overridepublic void sleep() {System.out.println(getName() + " is sleeping in the kennel."); }}```3. 创建子类`Cat`:```javapublic class Cat extends Animal {public Cat(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println(getName() + " is eating fish.");}@Overridepublic void sleep() {System.out.println(getName() + " is sleeping on the sofa."); }}```4. 创建测试类`TestInheritance`:```javapublic class TestInheritance {public static void main(String[] args) {Animal dog = new Dog("Buddy", 5);Animal cat = new Cat("Kitty", 3);dog.eat();dog.sleep();cat.eat();cat.sleep();}}```5. 编译并运行程序:- 使用Eclipse IDE打开实验项目,将上述代码分别放入对应的Java文件中。

JAVA第六次实验报告接口

JAVA第六次实验报告接口

JAVA第六次实验报告接口实验一1、实验题目体操比赛计算选手成绩的办法是去掉一个最高分和一个最低分再计算平均分,而学校考察一个班级的某科目的考试情况时,是计算全班学生的平均成绩。

Gymnastics 类和School 类都实现了ComputerAverage接口,但实现方式不同。

2、程序代码interfaceComputerAverage{public double average(double x[]);}class Gymnastics implements ComputerAverage{public double average(double x[]){int count=x.length;double aver=0,temp=0;for(inti=0;i<count;i++){< p="">for(int j=i;j<count;j++){< p="">if(x[j]<x[i]){< p="">temp=x[i];x[i]=x[j];x[j]=temp;}}}for(inti=1;i<count-1;i++){< p="">aver=aver+x[i];}if(count>2)aver=aver/(count-2);elseaver=0;return aver;}}class School implements ComputerAverage{public double average(double x[]){int count=x.length;double aver=0;for(inti=0;i<count;i++){< p="">aver=aver+x[i];}if(count>0)aver=aver/count;return aver;}}public class Estimator {public static void main(String args[]){double a[]={9.89,9.88,9.99,9.12,9.69,9.76,8.97};double b[]={89,56,78,90,100,77,56,45,36,79,98};ComputerAverage computer;computer=new Gymnastics();double result=computer.average(a);//computer调用average(double x[])方法,将数组a传递给参数xSystem.out.printf("%n");System.out.printf("体操选手最后得分:%5.3f\n",result);computer=new School();result=computer.average(b);//computer调用average(double x[])方法,将数组b 传递给参数xSystem.out.printf("班级考试平均分数:%-5.2f\n",result);}}3、实验结果4、实验分析一个类可以实现多个接口,类通过使用关键字implements声明自己实现一个或多个接口,如果一个非抽象类实现了某个接口,那么这个类必须重写该接口的所有方法。

JAVA第六次实验报告 接口

JAVA第六次实验报告 接口

实验一1、实验题目体操比赛计算选手成绩的办法是去掉一个最高分和一个最低分再计算平均分,而学校考察一个班级的某科目的考试情况时,是计算全班学生的平均成绩。

Gymnastics 类和School 类都实现了ComputerAverage接口,但实现方式不同。

2、程序代码interface ComputerAverage{public double average(double x[]);}class Gymnastics implements ComputerAverage{public double average(double x[]){int count=;double aver=0,temp=0;for(int i=0;i<count;i++){for(int j=i;j<count;j++){if(x[j]<x[i]){temp=x[i];x[i]=x[j];x[j]=temp;}}}for(int i=1;i<count-1;i++){aver=aver+x[i];}if(count>2)aver=aver/(count-2);elseaver=0;return aver;}}class School implements ComputerAverage{public double average(double x[]){int count=;double aver=0;for(int i=0;i<count;i++){aver=aver+x[i];}if(count>0)aver=aver/count;return aver;}}public class Estimator {public static void main(String args[]){double a[]={,,,,,,};double b[]={89,56,78,90,100,77,56,45,36,79,98};ComputerAverage computer;computer=new Gymnastics();double result=(a);//computer调用average(double x[])方法,将数组a 传递给参数x"%n");"体操选手最后得分:%\n",result);computer=new School();result=(b);//computer调用average(double x[])方法,将数组b传递给参数x"班级考试平均分数:%\n",result);}}3、实验结果4、实验分析一个类可以实现多个接口,类通过使用关键字implements声明自己实现一个或多个接口,如果一个非抽象类实现了某个接口,那么这个类必须重写该接口的所有方法。

接口的应用实验报告(3篇)

接口的应用实验报告(3篇)

第1篇一、实验目的1. 理解接口的概念和作用。

2. 掌握接口的使用方法,包括接口的定义、实现和继承。

3. 通过实际应用,加深对接口的理解和应用能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:Java3. 开发工具:Eclipse三、实验内容1. 接口的基本概念2. 接口的定义和实现3. 接口的继承和多态4. 接口的应用实例四、实验步骤1. 接口的基本概念(1)打开Eclipse,创建一个名为“InterfaceDemo”的Java项目。

(2)在项目中创建一个名为“Shape”的接口,包含一个抽象方法“draw()”。

```javapublic interface Shape {void draw();}```2. 接口的定义和实现(1)在项目中创建一个名为“Circle”的类,实现“Shape”接口。

```javapublic class Circle implements Shape {@Overridepublic void draw() {System.out.println("Drawing a circle.");}}```(2)在项目中创建一个名为“Rectangle”的类,实现“Shape”接口。

```javapublic class Rectangle implements Shape {@Overridepublic void draw() {System.out.println("Drawing a rectangle.");}}```3. 接口的继承和多态(1)在项目中创建一个名为“Triangle”的类,继承“Circle”类,并实现“Shape”接口。

```javapublic class Triangle extends Circle implements Shape {public void draw() {System.out.println("Drawing a triangle.");}}```(2)创建一个名为“Main”的类,用于测试接口的应用。

python继承定义多态的实验体会

python继承定义多态的实验体会

Python继承定义多态的实验体会1. 引言在面向对象编程中,继承和多态是两个重要的概念。

继承指的是一个类可以继承另一个类的属性和方法,从而实现代码的重用和扩展。

而多态则指的是同一种行为或方法可以用不同的方式实现。

在Python中,继承和多态是通过类和对象的特性来实现的。

本文将通过一个实验来探讨Python继承定义多态的概念和应用。

2. 实验背景在实验之前,我们首先需要了解一些与实验相关的背景知识。

以下是一些基本的概念:•类(Class):类是对象的蓝图或模板,用于定义对象的属性和方法。

•对象(Object):对象是类的一个实例,具有类定义的属性和方法。

•继承(Inheritance):继承是一种机制,允许一个类继承另一个类的属性和方法。

•多态(Polymorphism):多态是指同一种行为或方法可以用不同的方式实现。

3. 实验方法为了说明Python继承定义多态的概念,我们可以通过一个实验来展示其应用。

下面是实验的步骤:1.首先,创建一个父类(ParentClass)和一个子类(ChildClass)。

2.父类中定义一个方法(parent_method),并在子类中重写该方法。

3.创建一个父类对象和一个子类对象。

4.调用对象的方法,并观察多态的效果。

4. 实验代码以下是实验所需的Python代码:class ParentClass:def parent_method(self):print("This is the parent method.")class ChildClass(ParentClass):def parent_method(self):print("This is the overridden method in child class.")parent_obj = ParentClass()child_obj = ChildClass()parent_obj.parent_method()child_obj.parent_method()5. 实验结果运行上述代码,我们可以得到以下结果:This is the parent method.This is the overridden method in child class.从上述结果可以看出,子类对象调用了父类方法时,实际上调用的是子类中重写的方法。

java类的继承实验总结

java类的继承实验总结

java类的继承实验总结
在Java中,类的继承是面向对象编程的重要特性之一。

通过继承,子类可以从父类继承属性和方法,从而实现代码复用和层次化设计。

在实验过程中,我深入学习了Java的继承机制,总结了以下几点经验:
1. 子类可以继承父类的非私有属性和方法,可以重写父类的方法。

在重写方法时,要遵循Liskov替换原则,确保子类可以替换掉父类。

2. Java中只支持单继承。

利用接口可以实现多重继承的效果。

3. super关键字可以访问父类的属性和方法,也可以调用父类的构造方法。

4. 父类的构造方法会被自动调用,如果没有显式地调用super(),则会默认调用父类的无参构造方法。

如果父类没有无参构造方法,则需在子类中显式调用super()并传入相应的参数。

5. 子类构造方法中的第一行可以调用super(),也可以调用this()。

但是二者不能同时出现。

6. 父类和子类的引用可以相互转换,但是只能通过向上转型实现。

在向上转型时,子类的特有属性和方法会被隐藏。

通过这次实验,我更深刻地理解了Java的继承机制,并掌握了其在面向对象设计中的重要作用。

在今后的Java开发中,我将充分利用继承的优势,编写出更加优雅和高效的代码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

山西大学计算机与信息技术学院实验报告姓名学号专业班级课程名称 Java实验实验日期成绩指导教师批改日期实验名称实验 6 继承与接口[实验目的]1、掌握java 继承中父类及其子类的定义方法。

2、掌握子类重写父类同名方法的方法。

3、掌握接口的用法。

(1) 学习如何定义接口 ;(2) 掌握接口的实现方式 ;(3) 使用实现了接口的类 ;(4) 理解接口与抽象类的区别。

[实验要求]1、复习理论教学中所学的内容。

2、认真进行实验预习,查阅参考书,书写源程序,书写实验预习报告。

3、认真总结实验并书写实验报告。

[实验内容]1、类的继承性练习(1) 程序源代码如下。

public class Student{protected String xm; //姓名,具有保护修饰符的成员变量protected int xh;//学号void setdata(String xm,int xh){ //设置数据的方法this.xm=xm;this.xh=xh;}public void print(){ //输出数据的方法System.out.println(xm+", "+xh);}}class TestStudent{//测试类public static void main(String[] args) {Student s = new Student();s.setdata("小红", 2010242555);s.print();}}(2) 编译源并运行程序。

贴图如下图一(二)创建将被继承的类(1) 程序功能:通过Student类产生子类CollegeStudent,其不仅具有父类的成员变量xm(姓名)、xh(学号),还定义了新成员变量xy(学院)、bj(bj)。

在程序中调用了父类的print 方法,同时可以看出子类也具有该方法。

程序代码:public class CollegeStudent extends Student{protected String xy;protected int bj;void setdata(String xm,int xh,String xy,int bj){super.setdata(xm, xh);this.xy = xy;this.bj = bj;}public void print() {super.print();System.out.print("学院:"+xy+"班级:"+bj);}}class TestCollegeStudent{public static void main(String[] args) {CollegeStudent cs = new CollegeStudent();cs.setdata("小蓝", 2010242555, "计算机学院", 1);cs.print();}}运行结果贴图:图二(三)了解成员方法的覆盖方式(1)编写覆盖了Object 类toString方法的一个类,并用System.out.println()输出该类的一个对象。

程序代码:public class OverWriteToString {private String str;public OverWriteToString(){}public OverWriteToString(String str){this.str = str;}public String ToString(){return super.toString()+"\n"+str;}public static void main(String[] args) {OverWriteToString o = new OverWriteToString("This is a method "+"to overwrite ToString method!");System.out.println(o.ToString());}}运行结果贴图:图三(2)试着以Point类为例,尝试为Object类的clone()和equals()方法进行覆盖,Point类包含私有成员x,y,构造方法1(包含两个参数a,b),构造方法2(参数为Point p),clone方法,equals 方法,toString方法。

用TestPoint类进行测试。

程序代码:public class Point {private int x;private int y;public Point(){}public Point(int a,int b){x = a;y = b;}public Point(Point p){x = p.x;y = p.y;}//重写equals()方法public boolean equals(Object o){if(o instanceof Point){return (x==((Point)o).x && y==((Point)o).y);}elsereturn false;}//重写toString()方法public String toString(){return super.toString()+"\n该点的坐标为("+x+","+y+")";}//重写clone()方法public Object clone() throws CloneNotSupportedException {return new Point(this);}}class TestPoint{public static void main(String[] args) throws CloneNotSupportedException { Point p = new Point(2,3);Point p1= new Point(p);Point p2 = (Point)p.clone();System.out.println("p与p1相等吗?"+p.equals(p1));System.out.println("p与p2相等吗?"+p.equals(p2));System.out.println(p);System.out.println(p1);System.out.println(p2);}}运行结果贴图:图四(四)this、super和super()的使用(1)程序功能:说明this、super 和super()的用法。

程序首先定义Point(点)类,然后创建点的子类Line(线)。

最后通过TestLine类输出线段的长度。

程序中通过super(a,b)调用父类Point 的构造方法为父类的x 和y 赋值。

在子类Line 的setLine方法中,因为参数名和成员变量名相同,为给成员变量赋值,使用this 引用,告诉编译器是为当前类的成员变量赋值。

在length 和toString 方法中使用父类成员变量时,使用super 引用,告诉编译器使用的是父类的成员变量。

程序代码:public class Line extends Point{private Point p1;private Point p2;public Line(){super(5,5);}public Line(int x1,int y1,int x2,int y2){super(5,5);p1 = new Point(x1,y1);p2 = new Point(x2,y2);}public Line(Point p1,Point p2){super(5,5);this.p1 = p1;this.p2 = p2;}public void setLine(Point p1,Point p2){this.p1 = p1;this.p2 = p2;}public double legth(){return Math.sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));}public String toString(){return super.toString()+"\n该线起点为:("+p1.x+","+p1.y+")"+"终点为:("+p2.x+","+p2.y+")";}}class TestLine{public static void main(String[] args) {Point p1 = new Point();Point p2 = new Point(3,4);Line l = new Line(p1,p2);System.out.println("线l的长度为:"+l.legth());System.out.println(l);}}运行结果贴图:图五(五)接口的实现与运用实验任务 :本实验的任务是设计和实现一个 Soundable 接口 , 该接口具有发声功能 , 同时还能够调节声音大小。

Soundable 接口的这些功能将会由 3 种声音设备来具体实现 , 它们分别是收音机Radio 、随身昕 Walkman 和手机 Mobilephone 。

最后还要设计一个应用程序类来使用这些实现了Soundable 接口的声音设备类。

程序运行时 , 先询问用户想听哪种设备 , 然后程序就会按照该设备的工作方式来发出声音。

实验步骤 :(1) 仔细阅读程序, 并完成其中的代码1~代码3。

// InterfaceTest.javaimport java.util.*;interface Soundable{public void increaseVolume();public void decreaseVolume();public void stopSound();public void playSound();}class Radio implements Soundable{public void increaseVolume() {System.out.println("增大收音机音量");}public void decreaseVolume() {System.out.println("减小收音机音量");}public void stopSound() {System.out.println("关闭收音机");}public void playSound() {System.out.println("收音机播放广播");}}class Walkman implements Soundable{public void increaseVolume() {System.out.println("增大随声听音量");}public void decreaseVolume() {System.out.println("减小随声听音量");}public void stopSound() {System.out.println("关闭随声听");}public void playSound() {System.out.println("随声听播放音乐");}}class MobilePhone implements Soundable{ public void increaseVolume() {System.out.println("增大手机音量");}public void decreaseVolume() {System.out.println("减小手机音量");}public void stopSound() {System.out.println("关闭手机");}public void playSound() {System.out.println("手机播放铃声");}}class People{private String name;private int age;public void Listen(Soundable s){s.playSound();}}public class InterfaceTest {public static void main(String[] args) {int i ;People sportsman = new People();Scanner input = new Scanner(System.in);Soundable [] soundDevice = new Soundable[3];soundDevice[0] = new Radio();soundDevice[1] = new Walkman();soundDevice[2] = new MobilePhone();System.out.println("你想听什么?请输入选择(0 ——收音机,1——随声听,2——手机):");i = input.nextInt();sportsman.Listen(soundDevice[i]);soundDevice[i].increaseVolume();soundDevice[i].stopSound();}}(2) 打开文本编辑器编辑 InterfaceTest.java 并保存 , 然后在Eclipse 环境中进行编译 , 编译的结果将会产生 6 个 class 文件 , 其中包括 Soundable.class, 虽然 Soundable 本身是一个接口 , 但编译之后也会产生 class 文件。

相关文档
最新文档