这里是Java基础篇_有关接口和抽象类的几道练习题(分享)的完整攻略。
一、介绍
该篇文章主要介绍了Java中接口和抽象类的使用方法及练习题。通过练习题的实例,让读者更好的掌握接口和抽象类的编写方法和应用场景。
二、接口
1. 接口的定义
接口是一个抽象的概念,是一组方法的集合。在Java中,接口的定义使用关键字interface
来表示。
public interface InterfaceExample {
void method1();
int method2(int a, int b);
}
2. 接口的实现
要想使用接口,必须实现它。一个类可以实现多个接口,使用关键字implements
。
public class InterfaceExampleImpl implements InterfaceExample {
@Override
public void method1() {
System.out.println("Method1 implementation");
}
@Override
public int method2(int a, int b) {
return a + b;
}
}
3. 接口的默认方法
默认方法是指接口中带有默认实现的方法,使用关键字default
声明。默认方法是Java 8中新增的特性。
public interface InterfaceExample {
void method1();
int method2(int a, int b);
default void defaultMethod() {
System.out.println("Default method implementation");
}
}
4. 接口的静态方法
除了默认方法外,Java 8还新增了静态方法。接口中的静态方法必须带有方法体,并且使用关键字static
声明。
public interface InterfaceExample {
void method1();
int method2(int a, int b);
default void defaultMethod() {
System.out.println("Default method implementation");
}
static void staticMethod() {
System.out.println("Static method implementation");
}
}
三、抽象类
1. 抽象类的定义
抽象类是指至少有一个抽象方法的类,使用关键字abstract
声明。抽象类不能被实例化,只能被继承。抽象类可以包含非抽象方法。
public abstract class AbstractExample {
public abstract void method1();
public void method2() {
System.out.println("Method2 implementation");
}
}
2. 抽象方法的实现
如果一个类继承了一个抽象类,就必须实现抽象类中的所有抽象方法。如果不想实现抽象类中的所有抽象方法,那么这个类也必须是抽象类。
public class AbstractExampleImpl extends AbstractExample {
@Override
public void method1() {
System.out.println("Method1 implementation");
}
}
3. 抽象类的构造方法
抽象类也可以有自己的构造方法,但是不能用来创建对象。抽象类的构造方法可以被子类调用来初始化抽象类的成员变量。
public abstract class AbstractExample {
private int member;
public AbstractExample(int member) {
this.member = member;
}
public abstract void method1();
public void method2() {
System.out.println("Method2 implementation");
}
}
四、练习题
接下来介绍几道练习题,帮助读者更好的理解接口和抽象类的使用。
1. 练习一
定义一个接口Cal,其中含加减乘除四个方法。设计一个计算器类Calculator,实现接口Cal,并完成对两个数的加减乘除。
public interface Cal {
int add(int a, int b);
int subtract(int a, int b);
int multiply(int a, int b);
int divide(int a, int b);
}
public class Calculator implements Cal {
@Override
public int add(int a, int b) {
return a + b;
}
@Override
public int subtract(int a, int b) {
return a - b;
}
@Override
public int multiply(int a, int b) {
return a * b;
}
@Override
public int divide(int a, int b) {
return a / b;
}
}
2. 练习二
定义一个抽象类Animal,其中含有属性name和age,以及抽象方法eat。有三个子类猫、狗、鸟。猫、狗含有方法catchMouse和watchHouse,而鸟含有方法fly和sing,要求不同的子类实现它们各自的方法。
public abstract class Animal {
protected String name;
protected int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public abstract void eat();
}
public class Cat extends Animal {
public Cat(String name, int age) {
super(name, age);
}
public void catchMouse() {
System.out.println(name + " can catch mouse");
}
public void watchHouse() {
System.out.println(name + " can watch house");
}
@Override
public void eat() {
System.out.println(name + " is eating fish");
}
}
public class Dog extends Animal {
public Dog(String name, int age) {
super(name, age);
}
public void catchMouse() {
System.out.println(name + " can not catch mouse");
}
public void watchHouse() {
System.out.println(name + " can watch house");
}
@Override
public void eat() {
System.out.println(name + " is eating bone");
}
}
public class Bird extends Animal {
public Bird(String name, int age) {
super(name, age);
}
public void fly() {
System.out.println(name + " can fly");
}
public void sing() {
System.out.println(name + " is singing");
}
@Override
public void eat() {
System.out.println(name + " is eating worm");
}
}
五、总结
通过本篇文章的介绍和练习题的实例,相信读者对接口和抽象类的使用方法和场景有了更深入的了解。在Java的各种开发场景中,接口和抽象类都是非常常见并且重要的概念,读者需要不断熟练掌握和应用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java基础篇_有关接口和抽象类的几道练习题(分享) - Python技术站