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的包中。
在这里插入图片描述
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的包中。
在这里插入图片描述
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的包中。
在这里插入图片描述

代码: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(){
   	 
    }
}
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: package code09_抽象类接口.test03_接口; 这个代码声明了一个名为test03_接口的包。在Java,包是一种用于组织类和接口的机制。这个包的名字是code09_抽象类接口.test03_接口。这意味着它是code09_抽象类接口包的一个子包,并且包含了一些与接口相关的类和接口。 ### 回答2: code09_抽象类接口.test03_接口一个接口,它在code09_抽象类接口这个包接口Java的一种引用类型,它定义了一组方法的规范。当一个类实现了某个接口时,它就必须实现接口声明的所有方法。 test03_接口一个抽象类接口讲解的示例接口,它可能包含一些方法的声明。接口的方法默认是公共的、抽象的,不需要提供方法的具体实现。实现(test03_接口的类)需要对接口的方法进行具体的实现。 接口的主要特点有: 1. 接口的方法只能声明,不能有具体的实现。 2. 类可以实现多个接口。 3. 接口之间可以通过继承来扩展功能。 4. 接口可以定义静态方法、默认方法和私有方法。 5. 接口不能被实例化,但可以被类实现。 接口的作用主要有: 1. 实现代码的解耦,接口定义了对外提供的方法,不关心具体的实现,更方便修改和扩展代码。 2. 实现多继承,一个类可以实现多个接口,从而获得多个不同的行为。 3. 定义类型,接口可以作为变量的类型来使用。 总之,code09_抽象类接口.test03_接口一个接口,在Java接口是一种定义方法规范的引用类型,它具有多继承和解耦等特点,在软件开发有着广泛的应用。 ### 回答3: test03_接口是在code09_抽象类接口这个包一个接口接口Java的一种抽象类型,它可以定义方法的规范,但不能实现方法。接口可以包含方法的声明,但不包含方法的实现。在test03_接口定义的方法可以被其他类实现,并在实现类实现具体的方法。 在Java接口使用interface关键字定义。接口可以被类实现,实现接口的类要求实现接口定义的所有方法。一个类可以实现多个接口,这使得Java具有多重继承的特性。 在test03_接口定义的方法可以有多个,可以根据需要定义不同的方法。接口的方法默认是public和abstract的,所以在实现类必须将这些方法进行重写,并给出具体的实现。 接口还可以定义常量,这些常量默认是public static final的,可以直接通过接口进行访问。 接口使用可以帮助我们实现代码的扩展和组件的复用。通过实现接口,我们可以在不改变原有代码的基础上给类增加新的功能。同时,接口也可以用于解耦,降低代码的依赖性,提高代码的可维护性和可扩展性。 总结来说,test03_接口是code09_抽象类接口这个包一个接口,它定义了多个方法的规范,这些方法可以被其他类实现并给出具体的实现。接口使用可以帮助我们实现代码的扩展、组件的复用和解耦。通过实现接口,可以提高代码的可维护性和可扩展性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值