实验报告3解析

1.设计Bird、Fish类,都继承自抽象类Animal,实现其抽象方法info( ),并输出它们的信息。

要求如下:
1) 定义抽象类Animal,具有age属性、info( )方法
2) 定义Bird类,具有本身的特有属性color
3) 定 义Fish类,具有本身的特有属性weight

public class jicheng {

	public static void main(String[] args) {
	//创建对象,输出信息。
		Brid b=new Brid();
		Fish f=new Fish();
		b.info();
		f.info();
	}
}
abstract class Animal{//定义抽象类Animal
	String age;//age属性
	void info() {//info方法
	}
}
	class Brid extends Animal{//定义Brid类继承Animal类
		String color="红";//Brid类特有的属性color
		String age="12";
		public void info() {//子类重写父类方法
			System.out.println(age);
			System.out.println(color);
		}
	}
	class Fish extends Animal{//定义Fish类继承Animal类
		String weight="88kg";//Fish类特有属性wright
		String age="11";
		public void info() {//重写
			System.out.println(age);
			System.out.println(weight);
		}
	}

2.编写一个Java应用程序,该程序包括3个类:Animal、Monkey类和测试类。

要求如下:
(1)Animal有name(名字)、age(年龄)两个属性。有个带参构造方法,并且有个speak()抽象方法
(2)Monkey是Animal的子类,显示调用父类的带构造,在Monkey类中重写父类的方法speak(),在speak方法中输出“别说话!”的信息。在Monkey类中新增方法void think(),在think方法中输出“认真思考!”。
(3)测试类中测试程序
Animal

package shangji02;
//Animal有speak()抽象方法,故为抽象类。
public abstract class Animal {

	String name;//属性name
	String age;//属性age
	Animal (String name,String age){//带参构造方法
		System.out.println("父类带参构造被调用");
	}
	void speak() {//speak抽象方法
	}
}

Monkey

package shangji02;
//Monkey是Animal的子类
public  class Monkey extends Animal {
//调用父类的带参构造
	Monkey(String name, String age) {
		super(name, age);
	}
	//重写父类的方法speak()
	void speak() {
		System.out.println("别说话!");
	}
	//新增方法void think(),在think方法中输出“认真思考!”
	void think() {
		System.out.println("认真思考!");
	}
}

测试类

package shangji02;
public class DEMO {

	public static void main(String[] args) {
		//创建对象
		Monkey m=new Monkey(null, null);
		//输出
		m.speak();
		m.think();
	}
}

3.、编写程序,求柱体的体积:

(1)、为柱体的底面设计一个接口Geometry,包含计算面积的方法getArea();
(2)、为柱体设计类pillar,要求:
a)有两个成员变量,底面和高度。底面是任何可以计算面积的几何形状。
b)实现构造方法,对成员变量赋值。
c)包含成员方法,计算柱体pillar的体积。
(3)、编写测试类圆形类、矩形类实现Geometry接口,编写测试类Test,分别用圆形、矩形作为柱体的底面,并计算其体积。

package shangji03;

interface Geometry{//设计接口,包含方法getArea();
	public double getArea();
}
class Pillar{
	Geometry bottom;//底面接口
	double height;
	public Pillar(Geometry bottom, double height){//带参构造方法
	//赋值操作
		this.bottom=bottom;
		this.height=height;
	}
	//创建成员方法,计算体积
	public double Volume(){
		return bottom.getArea()*this.height; 
	}
}
class Circle implements Geometry{//创建圆形类
	double radius;
	public Circle(double radius){//调用本类成员变量
		this.radius = radius;
	}
	public double getArea() {//重写接口方法
		return Math.PI*this.radius*this.radius; 
		
	}
}
class Rect implements Geometry{//创建矩形类
	double wide,length;
	public Rect(double wide, double length){//调用本类成员变量
		this.wide = wide;
		this.length = length;
	}
	public double getArea() {//重写接口方法
		return wide*length;
	}
}
 
public class shangji_03 {
 
	public static void main(String[] args) {
		//创建对象
		 Pillar pillar;  
	     Geometry bottom;  
	          
	     bottom = new Rect(10, 5);  
	     pillar = new Pillar(bottom, 5);  
	     System.out.println("矩形底的柱体的体积:" + pillar.Volume());  
	          
	     bottom = new Circle(5);  
	     pillar = new Pillar(bottom, 5);  
	     System.out.println("圆形底的柱体的体积:" + pillar.Volume());  
 
	}
 
}

4.创建Person接口(即“人”),它有setData()和getData()方法对“人”属性name、sex和birthday赋值和获得这些属性组成的字符串信息。创建类Student实现Person接口,并对自己的“学生”属性的成员变量sID、speciality设置值和获得它们值所组成的字符串信息。

编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错

package shangji04;

public class shangji_04 {

	public static void main(String[] args) {
		// 创建对象,并输出。		
		Student s=new Student();
		s.setDate("林青霞", "女", "20");
		System.out.println(s.getDate());
	}
}
	interface Person{//创建Person接口
		//创建setDate方法,对“人”属性name、sex和birthday赋值
		public void setDate(String name,String sex,String birthday);
		//创建getData()方法,获得这些属性组成的字符串信息。
		public String getDate();
	}
	class Student implements Person{
		private String name;
		private String sex;
		private String birthday;
		private String sID="2020";
		private String speciality="写代码";
		//编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错
		@Override
		public void setDate(String name,String sex,String birthday) {
			this.name=name;
			this.sex=sex;
			this.birthday=birthday;
			
		}
		
		@Override
		public String getDate() {
			return "名字:"+name+"\n性别:"+sex+"\n生日:"+birthday+"\nID:"+sID+"\n特长:"+speciality;
		}
		
	}

5.写一个类A,该类创建的对象可以调用方法f输出英文字母表,然后在编写一个该类的子类B,要求子类B必须继承A类的方法f(不允许重写),子类创建的对象不仅可以调用方法f输出英文字母表,而且可以调用子类心中的方法g输出希腊字母表。

package shangji05;

public class demo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		A a=new A();
		a.f();
		B b=new B();
		b.f();
		b.g();
	}

}
 class A {

	public void f() {
		System.out.println("英文字母表");
	}
}
 class B extends A {

	public void g() {
		System.out.println("希腊字母表");
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值