java基础十三 面向对象特点_多态
来源:互联网 发布:笑猫日记第二季淘宝 编辑:程序博客网 时间:2024/04/30 06:36
多态,就是事物存在的多种形态
java中多态形成的条件是:
要有继承的关系存在,要有方法的重写,要有父类引用指向子类对象(Animal a = new Dog()就是将动物类的引用指向子类Dog,也就是指狗是一只动物)
多态的成员访问:
访问成员变量时,访问到的是父类的成员变量,访问成员方法时,最后运行的是子类的成员方法
向上转型和向下转型
父类引用指向子类对象就是向上转型,Father f = new Son();
而Son s = (Son)f就是向下转型(必须在有向上转型的情况下才能向下转型)
多态的优缺点:
优点:提高了代码可维护性和扩展性(可维护性是通过继承来保证的,扩展性是通过多态保证的)
缺点:不能使用子类特有的属性和行为
抽象类
抽象就是看不懂的,不知道某个功能具体怎么实现时就用抽象方法
抽象的特点
抽象类和抽象方法必须用abstract关键字来修饰
抽象类不一定包含有抽象方法,但是有抽象方法的类一定要是抽象类
抽象类是不可以被实例化的,它需要通过具体的子类来实例化,这也是多态的一种体现
抽象类的子类可以是抽象类(没意义),也可以是一个具体类(这个类重写了所有的抽象方法)
抽象类的成员特点
成员变量:既可以是变量,也可以是常量(abstract是不能修饰成员变量的)
成员方法:既可以是抽象方法,也可以是普通方法,但是抽象方法是强制要求子类实现的,而普通方法可以重写,可以不重写(此时就相当于继承父类)
构造方法:抽象类是有构造方法的,是为了让子类来访问父类的初始化数据
接口
从狭义上讲,就是java中的interface,从广义上讲,对外提供规则的就是接口
接口的特点
接口用关键字interface来标识
类实现接口需要用关键字implements
接口是不能实例化的(也是需要用多态的方式来实例化)
接口的子类可以是抽象类(意义不大),可以是具体类(此时就需要重写接口里面的所有抽象方法)
接口的成员特点
成员变量:只能是常量,并且是静态而且公共的
成员方法 只能是抽象方法
没有构造方法
类,接口的相关关系
类和类是继承关系,并且只能单继承
类和接口是实现关系,可以单实现,也可以多实现,并且在继承一个类的同时还可以实现多个接口
接口和接口是继承关系,可以单继承也可以多继承
抽象类和接口的区别
成员区别
抽象类的成员变量可以是变量也可以是常量,有构造方法,成员方法可以抽象也可以非抽象
接口的成员变量只能是public static final修饰 的,也就是常量,没有构造方法,成员方法都是抽象的
关系区别
类和类只能单继承
接口与接口可以单继承也可以多继承
设计理念不同
抽象类,能被继承,继承体现了" is a" ,抽象类定义的是该继承体系的共性功能
接口,能被实现,体现了"like a ",接口体现的是该继承体系的扩展功能
- java基础十三 面向对象特点_多态
- java基础十一 面向对象特点_封装
- java基础十二 面向对象特点_继承
- Java基础_面向对象_多态
- Java基础_面向对象_继承
- Java基础3_面向对象上
- Java基础3_面向对象上
- Java基础_面向对象思想
- Java基础<五>_面向对象(下)
- Java基础概念_面向对象
- 【黑马程序员】java基础_面向对象
- java基础_面向对象总结
- java基础6_面向对象
- Java基础_面向对象的基本特征
- java基础_面向对象高级特性
- 【java基础】第八天总结---面向对象第一特点---->封装
- 黑马程序员——Java基础---面向对象特点
- 黑马程序员----java基础面向对象特点及封装
- python
- Driver:硬件原理补充(1)
- 孤儿进程和僵尸进程
- 服务器端编程心得(七)——开源一款即时通讯软件的源码
- 运维学习7
- java基础十三 面向对象特点_多态
- hdu1269 迷宫城堡 tarjan求强联通分量
- java全组合算法
- 蓝桥杯 第七届JavaB组真题 方格填数
- hashcode
- 一.配置简单的嵌入式tomcat和jetty
- Mybatis和Spring项目突然报错
- Android开发学习笔记(4)
- 数组算法时间复杂度