Java面向对象综合练习
2024-01-07 22:27:46
面向对象
面向对象是一种编程范式,它将程序组织成对象。对象是数据和行为的集合。它允许我们以一种更自然的方式来思考问题,并使代码更易于维护和理解。
抽象类和接口
抽象类和接口是Java中实现面向对象编程的重要机制。抽象类是一种不能直接实例化的类。它可以包含抽象方法,这些方法没有实现。抽象类的子类必须实现这些抽象方法。
接口是一种只包含方法声明的类。它没有成员变量,也不能被实例化。接口中的方法都是抽象的,必须由实现该接口的类来实现。
多态
多态是面向对象编程中的另一个重要概念。它允许我们使用相同的代码来操作不同的对象。例如,我们可以使用一个方法来操作所有类型的动物对象,而无需关心对象的具体类型。
练习题
- 创建一个抽象类Animal,其中包含一个抽象方法speak()。
- 创建两个Animal的子类,Dog和Cat,并实现speak()方法。
- 创建一个名为Main的类,在其中创建一个Dog和一个Cat对象,并调用speak()方法。
- 创建一个接口Drawable,其中包含一个抽象方法draw()。
- 创建两个Drawable的实现类,Circle和Square,并实现draw()方法。
- 创建一个名为Main2的类,在其中创建一个Circle和一个Square对象,并调用draw()方法。
- 创建一个名为Shape的类,它继承自Drawable接口,并包含一个成员变量color。
- 创建一个名为Main3的类,在其中创建一个Shape对象,并设置color变量的值。
- 调用Shape对象的draw()方法,并观察输出结果。
- 创建一个名为MyRunnable的类,它实现Runnable接口。
- 创建一个名为Main4的类,在其中创建一个MyRunnable对象,并将其传递给Thread类的构造函数。
- 启动线程,并观察输出结果。
答案
public abstract class Animal {
public abstract void speak();
}
2. ```java
public class Dog extends Animal {
@Override
public void speak() {
System.out.println("Woof!");
}
}
public class Cat extends Animal {
@Override
public void speak() {
System.out.println("Meow!");
}
}
public class Main {
public static void main(String[] args) {
Animal dog = new Dog();
Animal cat = new Cat();
dog.speak();
cat.speak();
}
}
4. ```java
public interface Drawable {
void draw();
}
public class Circle implements Drawable {
@Override
public void draw() {
System.out.println("Drawing a circle.");
}
}
public class Square implements Drawable {
@Override
public void draw() {
System.out.println("Drawing a square.");
}
}
6. ```java
public class Main2 {
public static void main(String[] args) {
Drawable circle = new Circle();
Drawable square = new Square();
circle.draw();
square.draw();
}
}
public class Shape implements Drawable {
private String color;
public Shape(String color) {
this.color = color;
}
@Override
public void draw() {
System.out.println("Drawing a " + color + " shape.");
}
}
8. ```java
public class Main3 {
public static void main(String[] args) {
Shape shape = new Shape("red");
shape.draw();
}
}
- 输出结果:
Drawing a red shape.
public class MyRunnable implements Runnable {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("Hello from thread " + Thread.currentThread().getName());
}
}
}
11. ```java
public class Main4 {
public static void main(String[] args) {
MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start();
}
}
- 输出结果:
Hello from thread Thread-0
Hello from thread Thread-0
Hello from thread Thread-0
Hello from thread Thread-0
Hello from thread Thread-0
Hello from thread Thread-0
Hello from thread Thread-0
Hello from thread Thread-0
Hello from thread Thread-0
Hello from thread Thread-0