学习视频链接: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;
    }
    @Override
    public void area() {
        double result = length * wide;
        System.out.println("长方形的面积为:" + result);
    }
    @Override
    public 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;
    }
    @Override
    public void area() {
        double result = radius * PI;
        System.out.println("圆面积为:" + result);
    }
    @Override
    public 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{
    @Override
    public 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{
    @Override
    public 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() {
            @Override
            public void playGame() {
                System.out.println("打游戏");
            }
        };
        i.playGame();
        funSon f = new funSon();
        f.fun();
    }
}
 
运行结果:
 



















