JAVA_抽象类和接口

JAVA_抽象类和接口
1.编写程序,其中包含一个抽象类Person,两个类:Chinese和American。
(1)抽象类Person中包含一个名为name的变量用于存储姓名,使用构造方法对name进行赋值。
(2)抽象类Person包含一个名为sayHello的公共抽象方法声明,在控制台显示问好信息。
(3)Chinese和American这两个类继承了Person抽象类。
(4)Chinese和American这两个类在sayHello()方法中分别显示“您好,我叫。”和“Hello,my name is ”。
(5)在测试程序PersonTest的main()方法中使用Person定义一个长度为2的一维数组persons,依次存入Chinese(“丁丁”)、American(“Alice”)这两个对象,遍历数组persons,调用sayHello方法显示问好信息。
要求:所有类都存放在一个名为lab0701的包中。
JAVA_抽象类和接口_第1张图片
2.现有以下接口的声明:

public interface CalcArea {
	double getArea();
}

(1)定义圆类Circle并实现接口CalcArea,圆类的主要成员变量为半径radius,构造方法的参数用于初始化半径。
(2)定义矩形类Rectangle并实现接口CalcArea,矩形类的主要成员变量包括长length和宽width,构造方法的参数用于初始化长和宽。
(3)现有如下类Tester,其功能是求存储在一个数组中的多个图形的面积之和,要求补全其中缺少的代码。

public class Tester {
	static    **CalcArea[]**     shapes = { new Circle(1.0), new Rectangle(3.0, 4.0), new Circle(8.0) };
	public static void main(String[] args) {
		System.out.println("total area = " + sumArea(shapes));
	}
	public static double sumArea(   **CalcArea[]**     shapes) {
		double sum = 0;
		   for(CalcArea c:shapes) {
				sum=sum+c.getArea();
			}
			return sum;  	
}
}

要求:所有类和接口都存放在一个名为lab0702的包中。
JAVA_抽象类和接口_第2张图片
3.学校中有教师和学生两类人,而在职研究生既是教师又是学生。
(1)设计两个接口IStudent和ITeacher。其中,IStudent接口包含setFee()和getFee()方法,分别用于设置和获取学生的学费;ITeacher接口包含setPay()和getPay()方法,分别用于设置和获取教师的工资。
(2)定义一个研究生类Graduate,实现IStudent接口和ITeacher接口。它的私有成员变量有name(姓名,只读),fee(每年的学费),pay(每月的工资)。构造方法用于初始化各个成员变量。定义成员变量的getter和setter方法。
(3)在测试程序GraduateTest中使用Graduate类创建一研究生对象(姓名:李想;学费:2000;工资:9000),统计他的年收入,如果年收入减去一年的学费不足2000元,则输出“需要贷款”信息,否则输出“无需贷款”信息。
要求:所有类都存放在一个名为lab0703的包中。
JAVA_抽象类和接口_第3张图片

代码:0701

package lab0701;

public class American extends Person{

	American(String name) {
		super(name);
		// TODO Auto-generated constructor stub
	}
	void sayHello() {
		System.out.println("Hello,My name is"+name);
	}

}

package lab0701;

class Chinese extends Person{
	Chinese(String name) {
		super(name);
		// TODO Auto-generated constructor stub
	}
	void sayHello() {
		System.out.println("您好,我叫"+name);
	}
}

package lab0701;

abstract class Person {
	String name ;
	Person(String name ){
		this.name=name;
	}
	void sayHello() {
//		System.out.println("你好");
	}
	
	
}

package lab0701;

public class PersonTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Person[] persons=new Person[] {new Chinese("叮叮"), new American(" Alice")};
		for(Person p:persons) {
			p.sayHello();
			
		}
	}

}

代码:0702

package lab0702;

public interface CalcArea {
	double getArea();
}

package lab0702;

public class Circle implements CalcArea{
	double radius;
	Circle(double radius){
		this.radius=radius;
	}
	@Override
	public double getArea() {
		// TODO Auto-generated method stub
		return Math.PI*radius*radius;
	}

}
package lab0702;

public class Rectangle implements CalcArea{
	double length;
	double width;
	Rectangle(double length,double width){
		this.length=length;
		this.width=width;
	}
	@Override
	public double getArea() {
		// TODO Auto-generated method stub
		return length*width;
	}

}
package lab0702;

public class Tester {
	static    CalcArea[] shapes = { new Circle(1.0), new Rectangle(3.0, 4.0), new Circle(8.0) };
	public static void main(String[] args) {
		System.out.println("total area = " + sumArea(shapes));
	}
	public static double sumArea(  CalcArea[] shapes) {
		double sum = 0;
			for(CalcArea c:shapes) {
				sum=sum+c.getArea();
			}
			return sum;
}
}

代码:0703

package lab0703;

public class Graduate implements IStudent,ITeacher{
	private String name;
	private double fee;
	private double pay;
	public Graduate(String name,double fee,double pay) {
		this.setName(name);
		this.fee=fee;
		this.pay=pay;
	}
	public double getFee() {
		return fee;
	}
	public void setFee(double fee) {
		this.fee = fee;
	}
	public double getPay() {
		return pay;
	}
	public void setPay(double pay) {
		this.pay = pay;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

package lab0703;

//(3)在测试程序GraduateTest中使用Graduate
//类创建一研究生对象(姓名:李想;学费:2000;工资:9000),
//统计他的年收入,如果年收入减去一年的学费不足2000元,
//则输出“需要贷款”信息,否则输出“无需贷款”信息。

public class GraduateTest {
	public static void main(String[] args) {
		Graduate g = new Graduate("李想",2000,9000);
		if(g.getPay()>(g.getFee()+2000)) {
			System.out.println("不需要贷款");
		}else {
			System.out.println("需要贷款");
		}
	}
}
package lab0703;

// 3.中有教师和学生两类人,而在职研究生既是教师又是学生。
// (1)设计两个接口IStudent和ITeacher。其中,IStudent接
// 口包含setFee()和getFee()方法,分别用于设置和获取学生的学费;
// ITeacher接口包含setPay()和getPay()方法,分别用于设置和获取教师的工资。

public interface IStudent {
    public static void setFee() {
    }

	public static void getFee() {
	}
}
package lab0703;

public interface ITeacher {
	public static	void setPay() {	
   	 
    }
    public static void getPay(){
   	 
    }
}

你可能感兴趣的:(学习)