10月14-10月30继承与多态
第1题-Phone类与使用接口
package Java.Lesson.Homework.Oct13;
public class Phone {
public Phone(){
System.out.println("手机都可以:发信息,通电话");
}
public void useComm(PlayWiring pw){
pw.play();
}
public void useAptitudeNet(Network net){
net.networkConn();
}
public void useAptitudePic(TakePictures pic){
pic.takePicture();
}
}
interface PlayWiring{
public void play();
}
interface Network{
public void networkConn();
}
interface TakePictures{
public void takePicture();
}
class CommonHandset extends Phone implements PlayWiring{
public void play(){
System.out.print("普通手机能:");
System.out.println("播放音频");
}
}
class AptitudeHandset extends Phone implements Network,TakePictures{
public void networkConn(){
System.out.print("智能手机还能:");
System.out.println("连接网络");
}
public void takePicture(){
System.out.print("智能手机还能:");
System.out.println("照相");
}
}
package Java.Lesson.Homework.Oct13;
public class PhoneTest {
public static void main(String args[]){
Phone p1 = new Phone();
System.out.println("----------------------");
p1.useComm(new CommonHandset());
System.out.println("----------------------");
p1.useAptitudeNet(new AptitudeHandset());
p1.useAptitudePic(new AptitudeHandset());
}
}
-------------------------------------------------------
测试结果:
手机都可以:发信息,通电话
----------------------
手机都可以:发信息,通电话
普通手机能:播放音频
----------------------
手机都可以:发信息,通电话
智能手机还能:连接网络
手机都可以:发信息,通电话
智能手机还能:照相
Process finished with exit code 0
第2题-Geometry抽象类与Drawable接口
package Java.Lesson.Homework.Oct13;
public abstract class Geometry {
public abstract void getArea();
}
interface Drawable{
public abstract void howToDraw();
}
class Rectangle extends Geometry implements Drawable{
public void getArea(){
System.out.println("Area: " + length * width);
}
public void howToDraw(){
System.out.println("用直尺");
}
private int length = 0, width = 0;
public Rectangle(int length, int width){
this.length = length;
this.width = width;
}
public void setLength(int length){
this.length = length;
}
public void setWidth(int width){
this.width = width;
}
public int getLength(){
return this.length;
}
public int getWidth(){
return this.width;
}
}
class Circle extends Geometry implements Drawable{
public void getArea(){
System.out.println("Area:" + PI * radius * radius);
}
private int radius = 0;
private static final double PI = 3.14;
public Circle(int radius){
this.radius = radius;
}
public void setRadius(int radius){
this.radius = radius;
}
public int getRadius(){
return this.radius;
}
public void howToDraw(){
System.out.println("用圆规");
}
}
package Java.Lesson.Homework.Oct13;
public class GeometryTest {
public static void main(String args[]){
new Rectangle(4,5).getArea();
new Rectangle(4,5).howToDraw();
new Circle(2).getArea();
new Circle(2).howToDraw();
}
}
----------------------------------------------
测试结果:
Area: 20
用直尺
Area:12.56
用圆规
Process finished with exit code 0
第3题-BaseComputer抽象类与Programmer接口
package Java.Lesson.Homework.Oct13;
public abstract class BaseComputer {
private String brand;
private double size;
public void setBrand(String brand){
this.brand = brand;
}
public void setSize(double size){
this.size = size;
}
public String getBrand(){
return this.brand;
}
public double getSize(){
return this.size;
}
}
class MacBook extends BaseComputer{
public MacBook(String brand,double size){
super.setBrand(brand);
super.setSize(size);
}
}
interface Programmer{
public void coding(BaseComputer basecomputer);
}
class JavaProgrammer implements Programmer{
private String name;
public JavaProgrammer(String name){
this.name = name;
}
public void coding(BaseComputer basecomputer){
basecomputer.getBrand();
basecomputer.getSize();
System.out.println("Java程序员" + this.name + "正在用" +
basecomputer.getBrand() + "电脑写代码,电脑尺寸为" +
basecomputer.getSize() + "寸。");
}
}
package Java.Lesson.Homework.Oct13;
public class BaseComputerTest {
public static void main(String args[]){
BaseComputer computer = new MacBook("Apple",13.0);
System.out.println(computer.getBrand());
System.out.println(computer.getSize());
Programmer programmer = new JavaProgrammer("Tom");
programmer.coding(computer);
}
}
------------------------------------------------------------
测试结果:
Apple
13.0
Java程序员Tom正在用Apple电脑写代码,电脑尺寸为13.0寸。
Process finished with exit code 0
第4题-Geometry抽象类与矩形面积比较
package Java.Lesson.Book.AAASketches;
public abstract class Geometry {
public abstract void getArea();
}
interface Drawable{
public void howToDraw();
}
class Rectangle extends Geometry implements Drawable,Comparable<Rectangle>{
public void howToDraw(){
System.out.println("用直尺");
}
private int length;
private int width;
public Rectangle(int length,int width){
this.length = length;
this.width = width;
}
public void setLength(int length){
this.length = length;
}
public void setWidth(int width){
this.width = width;
}
public int getLength(){
return this.length;
}
public int getWidth(){
return this.width;
}
public void getArea(){
int area = this.length * this.width;
System.out.println("Area: " + area);
}
@Override
public String toString(){
return "矩形长度: " + this.length + ",矩形宽度: " + this.width +
",矩形面积: " + this.length * this.width + "\n";
}
@Override
public int compareTo(Rectangle r){
if(this.length * this.width > r.length * r.width){
return 1;
} else if(this.length * this.width > r.length * r.width){
return -1;
} else {
return 0;
}
}
}
package Java.Lesson.Book.AAASketches;
import java.util.Arrays;
public class AreaCompare {
public static void main(String args[]){
Rectangle[] rectangle = new Rectangle[]{
new Rectangle(2,8),
new Rectangle(3,7),
new Rectangle(4,10),
new Rectangle(11,5)
};
Arrays.sort(rectangle);
System.out.println(Arrays.toString(rectangle));
}
}
------------------------------------------------------------
测试结果:
[矩形长度: 2,矩形宽度: 8,矩形面积: 16
, 矩形长度: 3,矩形宽度: 7,矩形面积: 21
, 矩形长度: 4,矩形宽度: 10,矩形面积: 40
, 矩形长度: 11,矩形宽度: 5,矩形面积: 55
]
Process finished with exit code 0