实验8 包与接口
8.1实验目的
(1)了解多个目录下,多个类并存且由类同名的情况下对程序运行的影响;
(2)掌握Java程序中包的定义以及使用方法;
(3)掌握接口定义的语法格式、成员变量的定义、成员方法的定义;
(4)掌握接口实现的语法格式;
(5)掌握接口的使用和Java语言中利用接口实现多重继承;
8.2实验内容
(1)编写两个Java程序,在Tree.java中,显示“我是一棵树”,在Bamboo.java中,显示“我是一棵竹子”。(实验需在命令行中进行编译)
package Tree;
public class Living {
void say() {
System.out.println("我是一棵树");
}
}
图8.1 Tree包下的Livng.java
package Tree;
import Tree.Living;
public class Tree
{
public static void main(String[] args)
{
Living tree=new Living ();
tree.say();
}
}
图8.2 Tree包下的Tree.java
package Bamboo;
public class Living {
void say() {
System.out.println(“我是一棵竹子”);
}
}
图8.3 Bamboo包下的Livng.java
package Bamboo;
import Bamboo.Living;
public class Bamboo
{
public static void main(String[] args)
{
Living bamboo=new Living ();
bamboo.say();
}
}
图8.4 Bamboo包下的Bamboo.java
(2)编写一个Java程序,在程序中定义一个接口Bulid,定义一个类Tree实现接口,在Tree类中实现Bulid的接口。
package shiyan8_2;
public interface Bulid {
double PI=3.14;
public void area();
public void volume();
public void use();
}
图8.5定义Bulid 接口
package shiyan8_2;
import shiyan8_2.Bulid;
class Tree implements Bulid{
private double r;
private double h;
public Tree(double r,double h) {
this.r=r;
this.h=h;
}
public void area() {
double s=PI*r*r;
System.out.println("切面积:"+s);
}
public void volume() {
double v=PI*r*r*h;
System.out.println("体积:"+v);
}
public void user() {
System.out.println("Tree用于建造房屋");
}
@Override
public void use() {
// TODO Auto-generated method stub
}
}
public class Test{
public static void main(String[] args) {
// TODO Auto-generated method stub
Tree tree=new Tree(2,2);
tree.area();
tree.volume();
tree.user();
}
}
图8.6在Tree类中实现Bulid接口
(3)定义个类Plant,修改(2)声明Tree类继承Plant类,同时实现的Bulid接口内容不变。
package shiyan8_2;
import shiyan8_2.Bulid;
class Plant{
public String name;
public int age;
public Plant(String name,int age){
this.name=name;
this.age=age;
}
public void introduce() {
System.out.println("我是一颗成长了"+age+"年的"+name);
}
}
class Tree extends Plant implements Bulid {
public double r;
public double h;
public Tree(String name ,int age,double r,double h) {
super(name,age);
this.r=r;
this.h=h;
}
public void area() {
double s=PI*r*r;
System.out.println("切面积:"+s);
}
public void volume() {
double v=PI*r*r*h;
System.out.println("体积:"+v);
}
public void user() {
System.out.println("Tree用于建造房屋");
}
public void use() {
// TODO Auto-generated method stub
}
}
public class Test1{
public static void main(String[] args) {
// TODO Auto-generated method stub
Tree tree=new Tree("樱桃树",12,2,2);
tree.area();
tree.volume();
tree.user();
tree.introduce();
}
}
图8.7 Tree类继承Plant类
8.3实验指导
3.1包1
程序Tree.java
public class Tree
{
public static void main(String[] args)
{
Living tree=new Living ();
tree.say();
}
}
class Living
{
void say()
{
System.out.println(“我是一棵树”);
}
}
Bamboo.java
public class Bamboo
{
public static void main(String[] args)
{
Living bamboo =new Living ();
bamboo.say();
}
}
class Living
{
void say()
{
System.out.println(“我是一棵竹子”);
}
}
将Tree.java和Bamboo.java放与统一文件夹下。
编译Tree.java,运行Tree。
编译Bamboo.java,运行Bamboo。
运行Tree,观察提示结果
3.2包2
程序Living.java
package Tree;
public class Living
{
void say()
{
System.out.println(“我是一棵树”);
}
}
程序Tree.java
import Tree.Living
public class Tree
{
public static void main(String[] args)
{
Living tree=new Living ();
tree.say();
}
}
同样新建Bamboo包作上述修改,注意包在命令行中的编译格式,分别查看Tree.class和Bammbo.class的运行结果。
3.3接口1
Bulid接口:
定义成员变量PI为3.14;
定义成员方法area(切面积);
定义成员方法volume;
定义成员方法use。
Tree类:
在Tree类中实现Bulid接口;
其私有变量为半径和高度;
构造有参的构造方法;
实现area、volume、use方法(use方法可以定义为输出用于建筑房屋,或者用于打造家具等)
新建Test类建立Tree的对象,并输出其面积,体积,以及用途。
3.4 接口2
Plant类:
name和age。
有参构建方法初始化name和age。
实例方法introduce()输出“我是一棵生长了XX年的XX树”。
Tree类:
在3.3的基础上继承Plant类。
Test类:
加上introduce方法的调用。
8.4实验心得
通过本次实验,我了解了多个目录下,多个类并存且由类同名的情况下对程序运行的影响;掌握了Java程序中包的定义以及使用方法;掌握了接口定义的语法格式、成员变量的定义、成员方法的定义;掌握了接口实现的语法格式;掌握了接口的使用和Java语言中利用接口实现多重继承。