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 stubPerson[] 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;}@Overridepublic double getArea() {// TODO Auto-generated method stubreturn 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;}@Overridepublic double getArea() {// TODO Auto-generated method stubreturn 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(){}
}

JAVA_抽象类和接口相关推荐

  1. 不允许使用抽象类类型的对象怎么办_Java基础——面试官:你来说说抽象类和接口的区别...

    无论你是新手Java 程序员,还是老手程序员,可能在实际开发中很少自己写抽象类. 但是抽象类在某些时候的功能很强大,可以保证子类中百分百实现父类中的方法 -- 普通类的弊端,消除子类的冗余代码 -- ...

  2. php 抽象类 接口 区别,PHP中抽象类、接口的区别与选择分析

    本文实例分析了PHP中抽象类.接口的区别与选择.分享给大家供大家参考,具体如下: 区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过 ...

  3. C#中抽象类和接口的区别

    一.抽象类:       抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆 ...

  4. java中抽象接口_一篇文章让你彻底理解java中抽象类和接口

    相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方.往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇博客文 ...

  5. 类、抽象类、接口之间的区别

    目录 1.类与抽象类的异同之处 (1)类和抽象类的区别 (2)类和抽象类的相同之处 2.接口与类的异同之处 (1)接口与类相似点 (2)接口与类的区别 (3)接口特性 3.抽象类和接口的区别 1.类与 ...

  6. Java 抽象类与接口的区别

    接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样.接口是对动作的抽象,抽象类是对根源的抽象 抽象类表示的是,这个对象是什么.接口表示的是,这个对象能做什么.比如, ...

  7. java 接口工程_Java工程师(15)抽象类与接口

    抽象类 思考下面程序潜在的问题 交通工具中定义了4个方法,其中行驶方法内部会依次调用启动.加速.停止方法.由于不同的交通工具,启动的方式差异很大,所以交通工具类中并不实现该方法,而是将其交给子类实现. ...

  8. 《Java技术》第三次作业--面向对象——继承、抽象类、接口

    1.阅读下面程序,分析是否能编译通过?如果不能,说明原因.应该如何修改?程序的运行结果是什么?为什么子类的构造方法在运行之前,必须调用父 类的构造方法?能不能反过来? class Grandparen ...

  9. 抽象类和接口的联系与区别

    抽象类和接口联系与区别 关键字: 抽象类与接口的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的 ...

最新文章

  1. HTML的标签描述3
  2. C# 中的var关键字
  3. 模块--random
  4. 跟着微信后台团队学习分布式一致性协议
  5. 安装应用程序时,提示以前的某个程序安装挂起的解决方法
  6. php的mcypt,php 7.3 在Centos6.x下的安装过程
  7. wsdl接口_DEBUG系列四:第三方接口debug
  8. thinkphp学习笔记1—目录结构和命名规则
  9. 常微分方程的数值解法
  10. matlab中的sparse和full以及ground truth matrix
  11. 记:判断三个点是否在一条直线上
  12. 如何设置IE禁用代理服务器
  13. PHP的strtolower()和strtoupper()函数在安装非中文系统的服务器下可能会导致将汉字转换为乱码,请写两个替代的函数实现兼容Unicode文字的字符串大小写转换
  14. 惠普电脑没有insert键怎么办?(按回车不换行,光标到下一行文字处)
  15. linux文件如何改名字
  16. 补天漏洞平台为什么能吸引众多白帽和企业?
  17. PAT --- 1072.开学寄语 (20 分)
  18. opencv 白平衡之灰度世界算法
  19. mysql 存储数据时,报错Cause: java.sql.SQLException: Incorrect string value: '\xF4\x80\xB3\x81\xE8\xAE...'
  20. go语言读文件 java读文件_如何从Java中的文本文件逐行读取

热门文章

  1. HarvestText
  2. linux老男孩学习决心书
  3. python识别文字坐标_【Python 教程】使用 Python 和大漠插件进行文字识别
  4. 【java-JDK的下载-安装-配置】
  5. Step1我学习ros2的一些经历(从ubuntu安装到ros2中的位姿转换)
  6. java使用ajax请求下载excel响应结果显示乱码
  7. 2020-2021学年第二学期期末考试《药用高分子材料》大作业
  8. Keil5 编译时显示..\OBJ\TPAD.axf: error: L6002U: Could not open file ..\obj\main.o: No such file or direct
  9. systemd service unit
  10. javascript高级程序设计阅读收获(1.1)——javascript简短的历史回顾