先看题目,大家试着自己先敲一遍(答案都放在了图片下面):
- 设计一个抽象类 Person,包含私有成员变量 name,定义构造方法和成员变量的设置/获取方法;
- 设计一个接口 Sing, 抽象方法sing();
- 派生出一个具体子类Chinese,实现接口 Sing,新增加私有成员变量age,定义构造方法和成员变量的设置/获取方法。定义 toString()方法,输出成员信息。
- 实例化Chinese类的一个对象,并测试。
这里来看代码解析:
Person类:
public abstract class Person {
private String name;
public Person()
{}
public Person(String name)
{
this.name=name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Sing接口:
public interface Sing {
public void sing();
}
Chinese类:
public class Chinese implements Sing{
private int age;
@Override
public void sing() {
}
public Chinese(){}
public Chinese(int age)
{
this.age=age;
}
//获取变量
public int getAge() {
return age;
}
//修改变量
public void setAge(int age) {
this.age = age;
}
public String toString()
{
return "Chinese [age=" +age+"]";
}
public static void main(String[] args) {
Chinese chinese=new Chinese();
System.out.println(chinese.toString());
chinese.setAge(20);
System.out.println(chinese.getAge());
}
}
这里简单介绍几点:
1、抽象类格式里面实在class前面加上abstract;
2、抽象类里面可以有非抽象方法,注意,抽象方法不可以有方法体;
3、接口用interface关键字来定义类,即代替平时的class;
4、接口里面方法体不可以被定义;
5、由于抽象类里面没法实例化对象,因而抽象方法一定要被子类有所继承,并且定义方法体,接口也一样。