Java-10 抽象类、接口

/**
 * 抽象类:抽象方法与非抽象方法的集合
 * 
 *      语法: 
 *          <修饰符> 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();

猜你喜欢

转载自blog.csdn.net/qq_36090002/article/details/81604446