抽象类和接口之间的区别
1.关键字 abstract class interface
2.组成 构造方法,抽象方法,普通方法,static方法,常量和变量 接口只有全局常量和抽象方法
3.子类的使用 class子类extends抽象类 class类实现多个interface
4.关系 抽象类可以实现多个接口 接口不能继承抽象类
5.权限 抽象类可以使用各种权限 接口只能使用public
6.限制 单继承局限 接口不存在单继承局限
7.子类 抽象类和接口必须有子类,子类必须覆写全部的抽象方法
8.实例化对象 依靠上向转型实现实例化。
总结:抽象类比接口功能要多,只有一点,接口不受单继承局限,所以在抽象类和接口全部可以使用时,我们会优先考虑使用接口
参考:
1.在进行公共操作时必须要定义出接口
2.有了接口必须使用子类完善方法
3.如果是你自己所定义的接口,绝对不可以使用关键字new去创建接口的子类实例化对象,必须使用工厂类去构建这个实例化对象。
掌握的知识点:
1.抽象类和接口的定义区别
2.接口作为标准用于解耦合以及不同层之间的连接桥梁
3.一定要将工厂模式和代理模式的结构记下来。
final关键字
可以修饰类,方法以及属性(field)
1、使用final定义的类不能有子类(被阉割的类)
2.使用final修饰的方法不能被子类所覆写
3.使用final定义的变量就成为了常量,常量必须要进行赋值,不能采用默认赋值,而且被final修饰的常量名称在java开发中必须采用大写字母去表示,单词之间可以采用下划线进行分隔,
全局常量:
public static final 常量类型 常量名 = 常量值
对象的多态性
1.方法的多态性,包括方法的重载以及方法的覆写
class A{}
class B extends A{}
A a = new B();
上述的a就是向上转型
B b = (B)a;
这是向下转型
1.向上转型
向上转型之后的对象不能调用自己特殊的方法和属性,只能调用父类中的方法和属性,在调用中假设
父类的方法被其覆写,就采用覆写之后的方法。
主要为了统一参数,也就是说我们可以利用父类调用到子类的对象,利用其的向下转型将其转化为这个子类类型的对象。
2.向下转型
向下转型主要是为了调用子类的特殊方法。
注意:在向上转型的过程中,属性的覆盖不会被调用的,还是会直接调用父类的属性值。
通常情况我们为了参数的统一我们会使用向上转型
为了调用子类的特殊方法会使用子类的特殊方法
不转型,例如:String
强制转型可能会带来安全问题,我们在开发中药尽量少用。
instanceof可以判断一个对象是否可以由一个类实例化,向上转型之后才能向下转型
方法的覆写
1.方法的覆写
2.属性的覆盖
1.1方法的覆写(override)
原则:两同两小一大
1.方法名相同
2.参数类型和个数相同
3.返回值类型小于或者等于父类的返回值类型
4.抛出异常的类型小于或者等于父类抛出的异常类型
5.方法权限必须大于或者等于父类方法的权限
注意:私有方法不能被直接调用,所以也无法覆写,在上面我们的大小比较是指父类的范围比子类大,子类的对象范围父类的对象范围小,无论是直接父类,还是间接父类。
我们还可以复习一下重载概念(overload)
1.方法名相同
2.参数类型,个数,顺序有所不同就可以
如何在子类中调用被覆写了的方法:
我需要使用super关键字去调用:
super.父类被覆写的方法
重载和覆写(加一点)
重载的返回值可以不同,在开发中尽量保持统一
网友评论