抽象(abstract)
抽象方法必须在一个抽象类里抽象类的结构:属性,成员方法,构造器,抽象方法,常量
定义变量
1.抽象类可以没有抽象方法
2.抽象类可以没有抽象方法
3.抽象类是不能被实例化的, 抽象类不能创建对象。
4.抽象类的构造器存在的意义: 为了约定子类的构造器必须和父类要匹配
5.一个类如果继承了一个抽象类,就必须重写这个抽象类所有的抽象方法
abstract能修饰类,方法。1.抽象方法不能用private修饰,开发中,抽象方法基本上都是public 2.抽象方法不能用final修饰,用final修饰的方法是不允许重写。 3.抽象类不能用final修饰,用final修饰的类是不允许被继承的。总结
1、抽象方法必须是public或者protected(因为如果是private,不能被子类继承, 子类便无法实现该方法),默认情况下是可以的。(默认情况其实就是public) 2、抽象类不能被直接实例化,需要依靠子类采用向上转型的方式处理 3、抽象类必须有子类,使用extends继承,一个类只能继承一个抽象类。 4、子类(如果不是抽象类)则必须重写抽象类中的所有抽象方法 ,(如果子类没有实现父类的抽象方法,必须将子类也定义为abstract)
接口 ( 比抽象类更高级的抽象。)
声明:使用interface关键字,public interface Ch02 JDK1.7之前:接口中只能定义抽象方法,不能有属性,不能有方法。 (静态的常量) JDK8及以后:接口中只能定义抽象方法,不能有属性,可以有默认方法和静态方法 静态常量。 JDK7---JDK8:默认方法,静态方法。 图标发生的变化: 可定义的方法: 接口中结构的特点: 接口中的抽象方法默认是public abstract,我们推荐就省略了。 接口中的常量默认是public static final,我们推荐就省略了。 说一句话:接口中的结构必须是public。 接口可以被实现,实现类 比如说A类 implements 接口,那我们就说A是这个接口的实现类。 如果一个类实现了一个接口,它就需要重写接口中所有的抽象方法。 实现接口是可以多实现的,继承只能单继承。 开发中,如果一件事情可以通过继承和实现接口来解决问题,接口解决。
面试题:
- 继承抽象类和实现接口的异同。
·必须重写所有抽象方法
·继承抽象类是单继承,实现接口是多实现
2. 抽象类和接口的区别。
·抽象类能放属性、普通成员方法、构造器等
·接口能放属性、成员方法、静态方法和默认方法
3.在Java中只有单继承?
不对,有多继承。在Java中存在多继承,多继承发生在接口之间
Java类与类之间只有单继承
匿名实现类
代理类
数据结构
栈和队列:
栈和队列是两种操作受限的线性表
这种受限表现在:
栈的插入和删除只允许在表的尾端进行(在栈中叫做“栈顶”),满足FILO
First In Last Out
队列只允许在表尾插入元素,在表头删除元素:FIFO
First In First Out
栈与队列的相同点:
- 都是线性结构
- 插入操作都是在表尾进行
- 都可以通过顺序结构和链式结构实现
栈与队列的不同点:
- 队列是先进先出;栈是先进后出