d perimeter(); //创建抽象方法
2,定义一个接口 Graph,它有一个抽象的方法 draw() ,表示绘制 Shape.
public interface Graph { } //创建接口 public abstract void draw(); //创建抽象方法
3,构造 Shape 的两个子类 Circle 和 Rectangle,分别表示圆和矩形,并且实现接口 Graph. //创建Circle类,继承Shape类,并实现接口Graph
public class Circle extends Shape implements Graph { // 重写抽象类的抽象方法 public void area() { } // 重写抽象类的抽象方法 public void perimeter() { } // 重写接口的抽象方法 public void draw(){ }; } //创建Rectangle类,继承Shape类,并实现接口Graph public class Rectangle extends Shape implements Graph{ // 重写抽象类的抽象方法 public void area() {
3
// TODO Auto-generated method stub } // 重写抽象类的抽象方法 public void perimeter() { // TODO Auto-generated method stub } // 重写接口的抽象方法 public void draw(){ }; }
4,构造测试类 Test,其有方法 getShapeData(Shape s) ,它输出 s 的面积和周长, 构造矩形实例和圆实例,体会 area 方法和 perimeter 方法的多态性.
public class Test { public static void s.area(); s.perimeter(); } public static void main(String[] args) { getShapeData(Shape s){ //创建Test类 //创建 方法
getShapeData(new Circle()); new getShapeData(new Rectangle()); new
} }
//抽象类的多态 //抽象类的多态
5,类似上题,为 Test 添加方法 drawGraph(Graph g) ,它"画出"Graph 的图形---调用 draw 方法,构造矩形实例和圆实例,体会 draw 方法的多态性.
public class Test { public void drawGraph(Graph g){ g.draw(); } public static void main(String[] args) { Test t=new Test(); new t.drawGraph(new Circle()); new t.drawGraph(new Rectangle()); new } }
总结: 1,根据自己对实验的理解,说明一下在本实验中,抽象类 Shape 的作用是什么? 产生子类的同时给于子类一些特定的属性和方法 2, 分析说明抽象类和
接口的异同? 抽象类可以给出一些成员的实现,接口却不包含成员的实现,抽象类的抽象成员可以被子类部分 实现,接口的成员需要实现类完全实现,一个类只能继承一个抽象类,但可以实现多个接口. 1. 类是对对象的抽象;抽象是对类的抽象;接口是对行为的抽象.
//创建Test类 //创建 方法
//接口的多态 //接口的多态
4
2. 如果行为跨越不同的对象,可使用 ;对于一些相似的类对象,用继承抽象类. 3. 抽象类是从子类发现公共的东西,泛化出父类,然后子类继承父类;而接口是根本不知子 类的存在,方法如何实现还不确定,预先定义.
四, 五,熟悉 Eclipse 编写 Java 程序,Java 中程序的结构,接口的定义和使用
中有教师和学生两类人,而在职研究生既是教师又是学生.设计两个接口 studentinterface和teacherinterface. 其中, studentinterface接口包含setFee()getFee() 方法,分别用于设置和获取学生的学费;teacherinterface接口包含setPay()和getPay() 方法,分别用于设置和获取教师的工资. 定义一个研究生类graduate, 实现studentinterface接口和teacherinterface接口, 它 的成员变量有name,sex,age,fee,pay. 创建一个为"zhangsan"的研究生,统计他的年收入和学费,如果收入减去学费不 足2000元,则输出"provide a loan"(需要贷款)信息. 要求:在graduate中实现各个接口定义的抽象方法. 实验代码: 定义接口 IStudentinterface
public interface IStudentinterface { public void setFee(float fee); float public float getFee(); } //抽象(设置学生的学费)方法 //抽象(获取学生的学费)方法 //创建学生接口
定义接口 ITeacherinterface
public interface ITeacherinterface { public void setPay(float pay); float public float getPay(); } 定义研究生类 Graduate public class Graduate implements IStudentinterface