diff --git a/src/chapter4/Example01.java b/src/chapter4/Example01.java new file mode 100644 index 0000000..1ec110b --- /dev/null +++ b/src/chapter4/Example01.java @@ -0,0 +1,44 @@ +package chapter4; + +class Animal { + private String name; + private int age; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } +} + +// 定义 Dog 类继承 Animal 类 +class Dog extends Animal { + private String color; + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } +} + +public class Example01 { + public static void main(String[] args) { + Dog dog = new Dog(); + dog.setName("牧羊犬"); + dog.setAge(3); + System.out.println("名称:" + dog.getName() + ",年龄:" + dog.getAge()); + } +} diff --git a/src/chapter4/Example02.java b/src/chapter4/Example02.java new file mode 100644 index 0000000..320744e --- /dev/null +++ b/src/chapter4/Example02.java @@ -0,0 +1,5 @@ +package chapter4; + + +public class Example02 { +} diff --git a/src/chapter4/Example11/Example11.java b/src/chapter4/Example11/Example11.java new file mode 100644 index 0000000..f8cac74 --- /dev/null +++ b/src/chapter4/Example11/Example11.java @@ -0,0 +1,46 @@ +package chapter4.Example11; + +interface Animal { + int ID = 1; // 接口默认为常量添加 public static final + String NAME = "牧羊犬"; // 接口默认为常量添加 public static final + + // 定义抽象方法shout(),接口默认添加 public abstract + void shout(); + + // 静态方法,默认添加 public + static int getID() { + return Animal.ID; + } + + // 抽象方法 + public void info(); +} + +interface Action { + public void eat(); +} + +class Dog implements Animal, Action { + public void eat() { + System.out.println("喜欢吃骨头"); + } + + // 重写Animal接口中的抽象方法shout() + public void shout() { + System.out.println("汪汪..."); + } + + public void info() { + System.out.println("名称:" + NAME); + } +} + +public class Example11 { + public static void main(String[] args) { + System.out.println("编号:" + Animal.getID()); + Dog dog = new Dog(); + dog.info(); + dog.shout(); + dog.eat(); + } +} diff --git a/src/chapter4/demo45/Circle.java b/src/chapter4/demo45/Circle.java new file mode 100644 index 0000000..5269bc9 --- /dev/null +++ b/src/chapter4/demo45/Circle.java @@ -0,0 +1,27 @@ +package chapter4.demo45; + +/** + * 圆形类 + * 必需实现 Shape 接口中的 getArea 和 getPerimeter 方法 + */ +public class Circle implements Shape { + // 半径 + private double radius = 0; + private final static double PI = 3.14; + + // 有参构造 + public Circle(double radius) { + this.radius = radius; + } + + // 返回面积 + public double getArea() { + return PI * radius * radius; + } + + // 返回周长 + public double getPerimeter() { + return 2 * PI * radius; + } + +} diff --git a/src/chapter4/demo45/Main.java b/src/chapter4/demo45/Main.java new file mode 100644 index 0000000..8946290 --- /dev/null +++ b/src/chapter4/demo45/Main.java @@ -0,0 +1,49 @@ +package chapter4.demo45; + +import java.util.Scanner; + +public class Main { + public static void main(String[] args) { + // 处理用户输入 + Scanner sc = new Scanner(System.in); + + while(true) { + // 打印菜单 + ShapeCalculate.printMenu(); + int select = sc.nextInt(); + // 判断用户选项 + switch (select) { + case 1: // 圆形 + System.out.print("请输入圆形的半径:"); + double radius = sc.nextDouble(); + Shape circle = new Circle(radius); + ShapeCalculate.printArea(circle); + ShapeCalculate.printPerimeter(circle); + break; + case 2: // 长方形 + System.out.print("请输入长方形的长和宽:"); + double length = sc.nextDouble(); + double width = sc.nextDouble(); + Shape rectangle = new Rectangle(length, width); + ShapeCalculate.printArea(rectangle); + ShapeCalculate.printPerimeter(rectangle); + break; + default: + System.out.println("输入错误,请重新选择"); + ShapeCalculate.printMenu(); + break; + } + // 询问用户是否继续 + System.out.println("继续计算?(Y / N)"); + String answer = sc.next(); + if ("N".equalsIgnoreCase(answer)) { // 无论大小写,都识别 + break; + } + } + System.out.println("感谢您的使用,再见!"); + sc.close(); + } + + + +} diff --git a/src/chapter4/demo45/Rectangle.java b/src/chapter4/demo45/Rectangle.java new file mode 100644 index 0000000..55132af --- /dev/null +++ b/src/chapter4/demo45/Rectangle.java @@ -0,0 +1,29 @@ +package chapter4.demo45; + +/** + * 长方形类 + * 必需实现 Shape 接口中的 getArea 和 getPerimeter 方法 + */ + +public class Rectangle implements Shape { + // 长度 + private double length = 0; + // 宽度 + private double width = 0; + + // 有参构造 + public Rectangle(double length, double width) { + this.length = length; + this.width = width; + } + + // 获取面积 + public double getArea() { + return length * width; + } + + // 获取周长 + public double getPerimeter() { + return 2 * length + 2 * width; + } +} diff --git a/src/chapter4/demo45/Shape.java b/src/chapter4/demo45/Shape.java new file mode 100644 index 0000000..b992fae --- /dev/null +++ b/src/chapter4/demo45/Shape.java @@ -0,0 +1,15 @@ +package chapter4.demo45; + +/** + * 定义“图形”接口,只拥有抽象方法 + * 后续的圆形和长方形都实现该接口,即圆形和长方形都需要实现 getArea 和 getPerimeter 方法 + * 通过接口,可以制订“规范、规范” + */ +public interface Shape { + // 获取面积,省略 public abstract + double getArea(); + // 获取周长,省略 public abstract + double getPerimeter(); +} + + diff --git a/src/chapter4/demo45/ShapeCalculate.java b/src/chapter4/demo45/ShapeCalculate.java new file mode 100644 index 0000000..434e53c --- /dev/null +++ b/src/chapter4/demo45/ShapeCalculate.java @@ -0,0 +1,31 @@ +package chapter4.demo45; + +/** + * 图形计算器类 + * 1. final 类:防止被继承 + * 2. 私有构造函数(不可被实例化) + * 只有静态方法,不需要实例化,所有方法都可以通过类名调用 + */ +public final class ShapeCalculate { + private ShapeCalculate() { + throw new AssertionError("不应该被实例化"); + } + + // 打印图形面积 + public static void printArea(Shape shape) { + System.out.println("面积:"+shape.getArea()); + } + + // 打印图形周长 + public static void printPerimeter(Shape shape) { + System.out.println("周长:"+shape.getPerimeter()); + } + + // 打印计算器菜单 + public static void printMenu() { + System.out.println("==========图形计算器=========="); + System.out.println("1.圆形"); + System.out.println("2.长方形"); + System.out.print("请输入序号选择功能:"); + } +} diff --git a/src/chapter4/example07/Example07.java b/src/chapter4/example07/Example07.java new file mode 100644 index 0000000..b723756 --- /dev/null +++ b/src/chapter4/example07/Example07.java @@ -0,0 +1,15 @@ +package chapter4.example07; + +final class Animal { + // 空 +} + +//class Dog extends Animal { +// +//} + +public class Example07 { + public static void main(String[] args) { +// Dog dog = new Dog(); + } +} diff --git a/src/chapter4/example10/Example10.java b/src/chapter4/example10/Example10.java new file mode 100644 index 0000000..290b1ff --- /dev/null +++ b/src/chapter4/example10/Example10.java @@ -0,0 +1,19 @@ +package chapter4.example10; + +abstract class Animal { + abstract void shout(); + +} + +class Dog extends Animal { + void shout() { + System.out.println("汪汪..."); + } +} + +public class Example10 { + public static void main(String[] args) { + Animal dog = new Dog(); + dog.shout(); + } +}