返回

Java面向对象综合练习

Android

面向对象

面向对象是一种编程范式,它将程序组织成对象。对象是数据和行为的集合。它允许我们以一种更自然的方式来思考问题,并使代码更易于维护和理解。

抽象类和接口

抽象类和接口是Java中实现面向对象编程的重要机制。抽象类是一种不能直接实例化的类。它可以包含抽象方法,这些方法没有实现。抽象类的子类必须实现这些抽象方法。

接口是一种只包含方法声明的类。它没有成员变量,也不能被实例化。接口中的方法都是抽象的,必须由实现该接口的类来实现。

多态

多态是面向对象编程中的另一个重要概念。它允许我们使用相同的代码来操作不同的对象。例如,我们可以使用一个方法来操作所有类型的动物对象,而无需关心对象的具体类型。

练习题

  1. 创建一个抽象类Animal,其中包含一个抽象方法speak()。
  2. 创建两个Animal的子类,Dog和Cat,并实现speak()方法。
  3. 创建一个名为Main的类,在其中创建一个Dog和一个Cat对象,并调用speak()方法。
  4. 创建一个接口Drawable,其中包含一个抽象方法draw()。
  5. 创建两个Drawable的实现类,Circle和Square,并实现draw()方法。
  6. 创建一个名为Main2的类,在其中创建一个Circle和一个Square对象,并调用draw()方法。
  7. 创建一个名为Shape的类,它继承自Drawable接口,并包含一个成员变量color。
  8. 创建一个名为Main3的类,在其中创建一个Shape对象,并设置color变量的值。
  9. 调用Shape对象的draw()方法,并观察输出结果。
  10. 创建一个名为MyRunnable的类,它实现Runnable接口。
  11. 创建一个名为Main4的类,在其中创建一个MyRunnable对象,并将其传递给Thread类的构造函数。
  12. 启动线程,并观察输出结果。

答案

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();
    }
}
  1. 输出结果:
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();
    }
}
  1. 输出结果:
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