Java-实验11 super,继承中的构造方法,toString()和equals()

实验11  super,继承中的构造方法,toString()equals()

一、实验目的

1. 掌握super在继承中的使用规则。

2. 掌握基类Object的使用。

3. 掌握toString()和equals()的重写。

二、实验内容

1.下面是一个具有继承的程序RectangleDemo.java。类Volume继承了父类Rectangle

主类是RectangleDemo

public class RectangleDemo

{ public static void main (String[] args)

{ double result;

 Volume obj1=new Volume (10,20,30);

 result=obj1.volume ();

 System.out.println ("得到的长方体体积 ="+result);//10*20*30=6000

 result=obj1.area ();

 System.out .println ("得到的长方形面积 ="+result); //10*20=200

 result=obj1.volume (10.0);

 System.out.println ("立方体的体积="+result); //10*20*10=2000

 }

}

class Rectangle

{ double length;  

double width;

 double area()

 { return length*width;

 } 

 Rectangle(double w,double l)

 { length=l;

 width=w;

 } }

class Volume extends Rectangle

{ double height;

 Volume(double l,double w,double h)

 { super(l,w);

 height=h;  }

 double volume()

 { double vol;

 vol=area()*height;

 return vol; }

double volume(double y)

 { return y*y*y;  } }

【思考问题】 

RectangleDemo起何作用Volume Rectangle类之间有何关系

解:Rectangle属于主类,是程序编译和运行的入口;Volume继承了Rectangle的数据成员widthlength和成员方法AreaVolumeRectangle的子类;   

解释类Volume Volume(double l,double w,double h) 的作用super(l,w) 语句的作用

解: 1.Volume(double l,double w,double h) Volume类的构造函数,对本类数据成员height和父类数据成员widthlength进行初始化。

 2.Super主要是运用在继承条件下,对父类的数据成员进行初始化,值得注意super.name要求name是非私有的,这里super(l,w)相当于重新调用了父类Rectangle的有参构造方法。

指出类Volume中方法 double volume()double volume(double y)体现了面向对象技术的哪个性质 解:重载

如果对类Rectangle中的方法 double area()加上修饰符private程序能否通过

编译为什么 

解:不可以,因为子类继承的数据成员或方法只能是非私有的。

 ⑤写出程序运行结果;

得到的长方体体积 =6000

得到的长方形面积 =200

立方体的体积=2000

4. 针对下面的类Person,对其重写toString()equals()方法。

class Person

{

String name;

int age;

public String toString(){

return “name ”+name+” age “+age;

}

Public Boolean equals(Object obj){

If(obj!=null &&obj instanceof Person)

  {

Person p=(Person)obj;

If(name.equals(p.name))&&(age==p.age)

Return true;

       Else return false;}

else return false;

}

public void print()

{

System.out.println("Name is " + name + " and age is " + age);

}

}

 

5. 针对下面的继承类,请在空白处为子类创建构造方法,并为子类重写一个print方法。

class Person

{

String name;

int age;

public Person(String  name,int age)

{

   this.name=name;

   this.age=age;

}

public void print()

{

System.out.println("Name is " + name + " and age is " + age);

}

}

 

/**

 * Student类继承Person类,Student类是Person类的子类

 * @author EricLiang

 *

 */

class Student extends Person

{

String major;

Student (String  name,int age,String major)

{super(name,age);

This.major=major;

}

Public void print()

{

System.out.println(“name=”+name+ “ age=”+age+ “ major=”+major);

}}

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值