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 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_抽象类和接口相关推荐
- 不允许使用抽象类类型的对象怎么办_Java基础——面试官:你来说说抽象类和接口的区别...
无论你是新手Java 程序员,还是老手程序员,可能在实际开发中很少自己写抽象类. 但是抽象类在某些时候的功能很强大,可以保证子类中百分百实现父类中的方法 -- 普通类的弊端,消除子类的冗余代码 -- ...
- php 抽象类 接口 区别,PHP中抽象类、接口的区别与选择分析
本文实例分析了PHP中抽象类.接口的区别与选择.分享给大家供大家参考,具体如下: 区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过 ...
- C#中抽象类和接口的区别
一.抽象类: 抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆 ...
- java中抽象接口_一篇文章让你彻底理解java中抽象类和接口
相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方.往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇博客文 ...
- 类、抽象类、接口之间的区别
目录 1.类与抽象类的异同之处 (1)类和抽象类的区别 (2)类和抽象类的相同之处 2.接口与类的异同之处 (1)接口与类相似点 (2)接口与类的区别 (3)接口特性 3.抽象类和接口的区别 1.类与 ...
- Java 抽象类与接口的区别
接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样.接口是对动作的抽象,抽象类是对根源的抽象 抽象类表示的是,这个对象是什么.接口表示的是,这个对象能做什么.比如, ...
- java 接口工程_Java工程师(15)抽象类与接口
抽象类 思考下面程序潜在的问题 交通工具中定义了4个方法,其中行驶方法内部会依次调用启动.加速.停止方法.由于不同的交通工具,启动的方式差异很大,所以交通工具类中并不实现该方法,而是将其交给子类实现. ...
- 《Java技术》第三次作业--面向对象——继承、抽象类、接口
1.阅读下面程序,分析是否能编译通过?如果不能,说明原因.应该如何修改?程序的运行结果是什么?为什么子类的构造方法在运行之前,必须调用父 类的构造方法?能不能反过来? class Grandparen ...
- 抽象类和接口的联系与区别
抽象类和接口联系与区别 关键字: 抽象类与接口的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的 ...
最新文章
- HTML的标签描述3
- C# 中的var关键字
- 模块--random
- 跟着微信后台团队学习分布式一致性协议
- 安装应用程序时,提示以前的某个程序安装挂起的解决方法
- php的mcypt,php 7.3 在Centos6.x下的安装过程
- wsdl接口_DEBUG系列四:第三方接口debug
- thinkphp学习笔记1—目录结构和命名规则
- 常微分方程的数值解法
- matlab中的sparse和full以及ground truth matrix
- 记:判断三个点是否在一条直线上
- 如何设置IE禁用代理服务器
- PHP的strtolower()和strtoupper()函数在安装非中文系统的服务器下可能会导致将汉字转换为乱码,请写两个替代的函数实现兼容Unicode文字的字符串大小写转换
- 惠普电脑没有insert键怎么办?(按回车不换行,光标到下一行文字处)
- linux文件如何改名字
- 补天漏洞平台为什么能吸引众多白帽和企业?
- PAT --- 1072.开学寄语 (20 分)
- opencv 白平衡之灰度世界算法
- mysql 存储数据时,报错Cause: java.sql.SQLException: Incorrect string value: '\xF4\x80\xB3\x81\xE8\xAE...'
- go语言读文件 java读文件_如何从Java中的文本文件逐行读取
热门文章
- HarvestText
- linux老男孩学习决心书
- python识别文字坐标_【Python 教程】使用 Python 和大漠插件进行文字识别
- 【java-JDK的下载-安装-配置】
- Step1我学习ros2的一些经历(从ubuntu安装到ros2中的位姿转换)
- java使用ajax请求下载excel响应结果显示乱码
- 2020-2021学年第二学期期末考试《药用高分子材料》大作业
- Keil5 编译时显示..\OBJ\TPAD.axf: error: L6002U: Could not open file ..\obj\main.o: No such file or direct
- systemd service unit
- javascript高级程序设计阅读收获(1.1)——javascript简短的历史回顾