学习视频链接:https://www.bilibili.com/video/BV17F411T7Ao
文章目录
- 第一题:(抽象类求面积和周长)
- 第二题:(接口实现新旧手机功能)
- 第三题:(使用子类和匿名内部类调用接口)
第一题:(抽象类求面积和周长)
需求:
分析以下需求用代码实现:
-
定义形状类:
功能:求面积,求周长
-
定义圆形类Round:
属性:半径,圆周率
功能:求面积,求周长
-
定义长方形类Rectangle:
属性:长和宽
功能:求面积,求周长
-
定义测试类:
分别创建圆形和长方形对象,为相应的属性赋值
分别调用求面积和求周长的方法
- Graph接口
package cn.kox.homework01;/*** @ClassName: Graph* @Author: Kox* @Data: 2023/1/29* @Sketch:*/
public abstract class Graph {// 面积public abstract void area();// 周长public abstract void perimeter();
}
- Rectangle类
package cn.kox.homework01;/*** @ClassName: Rectangle* @Author: Kox* @Data: 2023/1/29* @Sketch:*/
public class Rectangle extends Graph{private double length;private double wide;public Rectangle() {}public Rectangle(double length, double wide) {this.length = length;this.wide = wide;}public double getLength() {return length;}public void setLength(double length) {this.length = length;}public double getWide() {return wide;}public void setWide(double wide) {this.wide = wide;}@Overridepublic void area() {double result = length * wide;System.out.println("长方形的面积为:" + result);}@Overridepublic void perimeter() {double result = (length + wide) * 2;System.out.println("长方形的周长为:" + result);}
}
- Round类
package cn.kox.homework01;/*** @ClassName: Round* @Author: Kox* @Data: 2023/1/29* @Sketch:*/
public class Round extends Graph{private double radius;private double PI;public Round() {}public Round(double radius, double PI) {this.radius = radius;this.PI = PI;}public double getRadius() {return radius;}public void setRadius(double radius) {this.radius = radius;}public double getPI() {return PI;}public void setPI(double PI) {this.PI = PI;}@Overridepublic void area() {double result = radius * PI;System.out.println("圆面积为:" + result);}@Overridepublic void perimeter() {double result = 2 * PI * radius;System.out.println("圆周长为:" + result);}
}
- Test测试类
package cn.kox.homework01;/*** @ClassName: Test* @Author: Kox* @Data: 2023/1/29* @Sketch:*/
public class Test {public static void main(String[] args) {Round r = new Round(2, 3.14);r.area();r.perimeter();Rectangle r1 = new Rectangle(10, 5);r1.area();r1.perimeter();}
}
运行结果:
第二题:(接口实现新旧手机功能)
需求:
- 定义手机类
行为:打电话,发短信
- 定义接口IPlay
行为:玩游戏
- 定义旧手机类继承手机类
行为:继承父类的行为
-
定义新手机继承手机类实现IPlay接口
行为:继承父类的行为,重写玩游戏方法
-
定义测试类
在测试类中定义一个 用手机的方法,要求该方法既能接收老手机对象,也能接收新手机对象
在该方法内部调用打电话,发短信以及新手机特有的玩游戏方法
- formerPhone类
package cn.kox.homework02;/*** @ClassName: formerPhone* @Author: Kox* @Data: 2023/1/29* @Sketch:*/
public class formerPhone extends Phone{public void show() {System.out.println("老手机");}
}
- IPlay接口
package cn.kox.homework02;public interface IPlay {void playGame();
}
- newPhone类
package cn.kox.homework02;/*** @ClassName: newPhone* @Author: Kox* @Data: 2023/1/29* @Sketch:*/
public class newPhone extends Phone implements IPlay{@Overridepublic void playGame() {System.out.println("玩游戏");}public void show() {System.out.println("新手机");}
}
- Phone类
package cn.kox.homework02;/*** @ClassName: Phone* @Author: Kox* @Data: 2023/1/29* @Sketch:*/
public class Phone {public void send() {System.out.println("发短信");}public void phoning() {System.out.println("打电话");}
}
- Test测试类
package cn.kox.homework02;/*** @ClassName: Test* @Author: Kox* @Data: 2023/1/29* @Sketch:*/
public class Test {public static void main(String[] args) {formerPhone f = new formerPhone();f.show();f.phoning();f.send();System.out.println();newPhone n = new newPhone();n.show();n.phoning();n.send();}
}
运行结果
第三题:(使用子类和匿名内部类调用接口)
需求:
- 接口IPlay中有一个方法playGame(),在测试类中如何调用该方法?
要求1.创建子类实现接口的方式实现
要求2:用匿名内部类实现
- 一个抽象类Fun中有一个抽象方法 fun() , 在测试类中如何调用该方法?
要求1.创建子类继承抽象类的方式实现
要求2:用匿名内部类实现
- Fun接口
package cn.kox.homework03;public interface Fun {public abstract void fun();
}
- funSon类
package cn.kox.homework03;/*** @ClassName: funSon* @Author: Kox* @Data: 2023/1/29* @Sketch:*/
public class funSon implements Fun{@Overridepublic void fun() {System.out.println("开个玩笑吧");}
}
- IPlay接口
package cn.kox.homework03;public interface IPlay {void playGame();
}
- Test测试类
package cn.kox.homework03;/*** @ClassName: Test* @Author: Kox* @Data: 2023/1/29* @Sketch:*/
public class Test {public static void main(String[] args) {IPlay i = new IPlay() {@Overridepublic void playGame() {System.out.println("打游戏");}};i.playGame();funSon f = new funSon();f.fun();}
}
运行结果: