实训-继承与接口2

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

实训继承与接口 2

一、实训目标

理解对象的上转型对象,以及多态的目的和意义,掌握多态的常用形式。

理解抽象类的意义和实际应用的一般模式,熟练掌握抽象类和抽象方法的定义以及抽象类的继承,尤其是子类是非抽象类的情况。

二、实训内容

1、请按模板要求,将【代码】替换为Java程序代码。

Parent.java

abstract class Parent{ abstract void grow();

}

Son.java

class Son extends Parent{ void grow(){

System. out .println( "son: 我比父亲成长条件好一点!" ); // 重写grow ()方法,输出”son: 我比父亲成长条件好一点! ”

}

void play(){

System. out .println(" 我会踢球" );

}

}

Daughter.java

class Daughter extends Parent{

void grow(){

System. out .println( "daughter: 我比父亲成长条件好很多!" ); // 重写grow ()方法,输出” daughter: 我比父亲成长条件好很多! ”

}

void dance(){

System. out .println(" 我会跳舞" );

}

MyTest.java

public class MyTest {

public static void main(String[] args ) {

Parent p=new Son();

// 将p设为为子类Son的上转型对象

}

p.grow(); // 调用重写父类中的grow ()方法

//p.play(); 这里会报错,因为不能调用子类新增的play() 方法

Son s =(Son) p; // 将上转型对象进行强制转化为子类Son的对象s.play(); // 调用子类中的方法

Parent p2 =new Daughter(); // 将p设为为子类Daughter 的上转型对象p2 .grow();

// 调用重写父类中的grow ()方法

Daughter d =(Daughter) p2; // 将p进行强制转化为Daughter 的对象 d.dance(); // 调用Daughter 类中的dance ()方法

【实验-继承与接口1】

(1)设计一个形状类Shape,包含一个getArea() 方法,该方法不包含实际语句。

package pk1;

public interface Shape {

double getArea( double area );

public abstract

public double getArea();

}

2)在Shape类基础上设计圆形(Circle) 、矩形( Rectangle )和梯形(Ladder) 三个子类,要求根据实际形状重写getArea() 方法,用于计算形状的面积。

Circle.java

package pk1;

public class Circle implements Shape {

public Circle( int i ){

this . r=i ; // 设置半径

}

private float r;

public double getArea(){

return 3.14* r*r;

}

@Override

public double getArea( double area ) {

// TODO自动生成的方法存根

return 0;

}

}

Rectangle.java package pk1;

public class Rectangle implements Shape{ private float w;

// 宽private float h; // 高

public Rectangle( float w, float h){ this . w=w;

this . h=h;

}

public double getArea(){

return w*h;

}

@Override

public double getArea( double area ) {

// TODO自动生成的方法存根

return 0;

}

}

Ladder.java package pk1;

public class Ladder implements Shape{

private float t ; // 上底

下底

private float b; //

private float h; //

public Ladder( float t float b, float h){

this . t =t ;

this . b=b;

this . h=h;

}

public double getArea(){ return (( t +b)* h)*1/2;

}

@Override

public double getArea( double area ) {

// TODO 自动生成的方法存根

return 0;

}

}

(3)创建一个应用程序主类TestShape,在main()方法中分别创建三个子类对象,Circle c=new Circle(10);// 构造方法中给圆半径变量赋值Rectangle r=new Rectangle(10,20);// 构造方法中给长、宽变量

赋值

Ladder c=new Ladder(3,5,4);// 构造方法中给上底、下底和高变

量赋

相关文档
最新文档