Java面向对象(多态、抽象类、接口)

来源:互联网 发布:ntfs for mac序列号 编辑:程序博客网 时间:2024/05/17 06:17

一、多态
多态就是一个事物有多种状态,比如(水:液态、固态、气态)
多态的三个前提:
1.有继承关系
2.方法重写
3.父类引用指向子类对象
父类引用指向子类对象:
1.访问变量:编译看左边,运行看左边
2.访问成员方法:编译看左边,运行看右边
3.访问静态方法:编译看左边,运行看左边
调用静态方法:可以通过类直接访问,也可以通过
对象访问,但本质是类名访问,所以调用静态方法
不存在多态,这个是一个假象。静态方法不算方法的重写
类型提升:
向上提升:小类型向大类型转换,父类 对象名 = new 子类();
向下转型: 父类引用上进行强制转换,子类 对象名 = (子类)父类对象名;
类型提升解决了多态的弊端,父类不能访问子类的独有的方法
多态的好处和弊端:
1.提高代码的维护性,由继承保证,大量的代码写在了父类中
2.提高程序扩展性:由多态保证
3.多态中父类不能访问子类中独有的方法

二、抽象类
抽象abstract,不是具体的一个物体,属于一类,要用抽象类来定义,在以后的工作中要考虑是
用抽象还是普通类
抽象类的注意事项:
有构造方法,不能进行实例化,要由具体的子类实例化,用多态实现
抽象类不一定有抽象方法,但是有抽象方法的类一定是抽象类
抽象类的成员:成员变量可以是变量,也可以是常量
成员方法:可以是普通方法,也可以是抽象方法
抽象类的子类可以有两种,一种可以是抽象类,一种可以是普通类,但是普通类要重写父类里的抽象方法
抽象类也可以有父类
abstract不能和哪些关键字一起用?
1.private:抽象类,希望别人实现方法,被private修饰会冲突
2.final:被final修饰以后不能重写方法

3.static


三、接口
接口 interface,可以给一个类提供而外的功能,使用 implement 实现接口,也算是对继承只能单继承弊端的一个解决方法
接口中的成员只能是常量和抽象方法,要实现接口就要全部实现抽象方法
接口是能力的扩展,不会对本质产生影响
比如一个门,可以在门的基础上添加门铃,门铃就可以看作是对门能力的扩充,门铃就是一个接口
接口的注意事项:
接口主要是对能力的扩充,没有new构造方法
定义的变量在接口里会变成常量,所以标识符所有字母都要大写,有个隐藏的 public static final
java源码中很多都是用接口来写的,因为java不受行业约束
类和类的关系:
继承关系,只能单继承,不能多继承,能多层继承,不能多重继承
类和接口的关系:
实现关系,类来实现接口的方法,单实现也可以多实现
接口和接口的关系:
可以继承,多继承(没有讲)
抽象类和接口关系:
实现接口
抽象类可以有变量、常量、成员方法、抽象方法
接口只能有常量和抽象方法







0 0
原创粉丝点击