面向对象(十四)
面向对象(十四)
抽象类
抽象类就是用abstract关键字修饰的类。
- 抽象类无法new出实例,只能靠子类去实现
- 抽象类中可以创建普通的方法
- 抽象方法(用abstract修饰的方法)只能存在于抽象类中
抽象类 Action
package com.oop.demo06;
public abstract class Action {
//抽象方法无法创建方法体,需要子类实现
public abstract void doSomething();
//抽象类中也可以创建普通方法
public void changeSomething() {
System.out.println("Change Something.");
}
}
继承Action的子类Running
package com.oop.demo06;
public class Running extends Action {
//继承抽象类必须要实现抽象类中的抽象方法
@Override
public void doSomething() {
System.out.println("Do Something.");
}
}
接口
接口与抽象类有相似之处,下面有两个接口Traffic和Sleep, 和一个类Flight
Traffic
package com.oop.demo07;
public interface Traffic {
void goOut();
}
Sleep
package com.oop.demo07;
public interface Sleep {
String sleepWhere(String where);
}
Flight
package com.oop.demo07;
public class Flight implements Traffic, Sleep{
@Override
public void goOut() {
System.out.println("乘坐飞机出行.");
}
@Override
public String sleepWhere(String where) {
return where;
}
}
可以看出,接口有以下的一些特点:
- 接口定义的是一种约束,只定义方法的参数和返回,不定义方法体(方法体由其他同事实现)
- 接口中的方法默认带有 public abstract关键字修饰,可以不自行添加
- 接口不能被实例化,接口中也没有构造方法
- 可以使用implements实现多个接口,如上面实现了Traffic和Sleep两个接口
- 实现接口必须要重写接口中定义的方法