/**
* 抽象类:抽象方法与非抽象方法的集合
*
* 语法:
* <修饰符> abstract class 抽象类名
* {
* 抽象方法;
* 非抽象方法;
* }
* 两种特殊情况:
* 类中全部都是抽象方法;
* 类中全部都是非抽象方法;(意义不大)
*
* 注意:
* 1.抽象类不能被实例化
* 2.抽象方法必须在其子类中被实现,否则该子类只能声明为abstract
* 3.抽象方法不能为static----不允许他人使用类名.方法名()方式访问,因为抽象方法没有具体实现
*
* 当出现以下情况时,类必须定义为abstract抽象类:
* 1.只要类中包含一个或多个abstract抽象方法,该类必须为abstract抽象类
* 2.当子类没有实现父类所有的抽象方法时,子类必须为abstract抽象类
*
* 抽象方法:没有方法体,只有方法声明
* 语法:
* <修饰符> abstract 返回值类型 方法名(参数列表);
*/
//抽象方法
public abstract void getSalary();
//非抽象方法
public void getDetail()
{}
继承:
public class SubAbstractClass extends AbstractClass {
@Override
public void getSalary() {
System.out.println("薪水:" + 5000);
}}
测试:
//抽象类不能被实例化
//AbstractClass a = new AbstractClass();
//抽象类使用:基于子类进行实例化,并提供抽象方法的具体实现
SubAbstractClass sub = new SubAbstractClass();
sub.getSalary();
接口:接口对类来说是一套规范,是一套行为协议
语法:
<修饰符> interface 接口名
{
常量;
抽象方法;
}
默认修饰符:
常量默认修饰:public static final
抽象方法默认修饰符:public abstract
注意:
1.接口不能被实例化
2.接口可以继承多个接口(接口可以多继承),(类只允许单继承)
public interface VADevice extends VedioDevice,AudioDevice{}
3.一个类,既可以继承extends一个父类,又可以实现implements多个接口,且extends放在implements前
public class Television extends Test implements AudioDevice,VedioDevice{}
类与类之间的关系:继承(extends),只可以单继承
public Television extends Test{}
接口与接口之间的关系:继承(extends),可多继承
public interface VADevice extends VedioDevice,AudioDevice{}
类与接口之间的关系:实现(implements),可多实现
public class Television implements AudioDevice,VedioDevice{}
public class Television extends Test implements AudioDevice,VedioDevice{}
接口:
//音像设备
public interface VADevice extends VedioDevice,AudioDevice{
}
接口:
//视频设备
public interface VedioDevice {
//常量
int MAX_BRIGHTNESS = 100;
public static final int MIN_BRIGHTNESS = 10;
//抽象方法
void turnOn();//开机
public abstract void trunOff();//关机
}
实现类:
//音频设备
public interface AudioDevice {
//常量
int MAX_VOLUMN = 100;
public static final int MIN_VOLUMN = 0;
//方法
void start();//开始播放
public abstract void stop();//停止播放
}
实现类:
//电视机(综合音频 + 视频的功能)
public class Television extends Test implements AudioDevice,VedioDevice{
//@Override
public void turnOn() {
System.out.println("开机...");
}
@Override
public void start() {
System.out.println("开始播放....");
}
@Override
public void stop() {
System.out.println("停止播放....");
}
@Override
public void trunOff() {
System.out.println("关机....");
}
}
测试:
Television tv = new Television();
tv.turnOn();
tv.start();
tv.stop();
tv.trunOff();