一、abstract关键字
/*
* 如果一个方法只有存在的意义没有实现的意义,那么这个方法就可以是一个
* 抽象方法
* 有抽象方法的类一定是个抽象类
* 抽象类存在的意义就是被继承,而抽象方法存在的意义就是被重写,其实就是为、
* 了多态服务。
*/
public abstract class AbstractTest {
// 抽象方法没有方法体,利用abstract修饰
public abstract void doSomething();
// 有抽象方法的类一定是抽象类。
// 抽象类中可以没有抽象方法
// 抽象类中可以存在普通方法
// 抽象类中含有构造方法,但是不能有抽象的构造方法
int a ;
// 构造方法是为了给子类使用的
// abstract AbstractTest(){}
public static void main(String[] args) {
// 抽象类不能创建对象
// AbstractTest t = new AbstractTest();
}
}
/*
* 子类继承父抽象类的时候,报错的原因是没有实现父类中全部的抽象方法。
* 解决方案
* 1、重写全部的父类中的抽象方法
* 2、将子类也变成抽象类
*/
abstract class Test extends AbstractTest {
}
二、接口
// 1、接口和接口的关系:继承关系(extends)多继承
// 2、接口和类的关系:没有关系
// 3、类和接口的关系:实现关系(implements)多实现
// 4、类和类的关系:继承,单继承
public interface InterfaceDemo extends Inter,Bnter{
//接口关系中多继承接口的时候用的是逗号分隔
//多个接口,不用多次写继承关系
}
interface Inter{}
interface Bnter{}
class Demo implements Inter,InterfaceDemo{}
// 一个类同时继承和实现接口的时候,需要保证继承在实现之前
class Demo01 extends Demo02 implements Inter{
public static void main(String[] args) {
//接口不能创建对象
//但是接口可以进行向上类型转换,有实现类给其赋值
Inter i = new Demo01();
}
}
class Demo02{}