A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xp2015 中级黑马   /  2015-8-20 22:18  /  401 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多态

多态:对象在不同时刻表现出来的不同状态
成员特点:方法有重写,变量没有重写
优点:提高了扩展性和可维护性
前提条件:
A. 要有继承关系(或者实现关系)
B. 要有方法重写
C. 要有父类(或接口)引用指向子类对象

Fu f = new Fu() ; // f是父类的引用
Zi z = new Zi() ; // new Zi()是new的子类对象

Fu f = new Zi(); // 向上转型
Zi z = (Zi)f; // 向下转型

Java.lang.ClassCastException 类型转换以异常(类型不匹配)

运行时成员变量和成员方法都是看的左边。父类没有的就无法访问

弊端:父类引用不能使用子类特有的功能
基本类型:隐式转换(从小到大) 强制转换(从大到小)
引用类型:向上转型(从小到大) 向下转型(从大到小)
子类内存地址值赋给父类 父类内存地址值赋值给子类

抽象类(必须要用abstract修饰)

定义:含有抽象方法的类为抽象类,或者由abstract关键字修饰的类。
提取方法声明 没有方法体: public abstract void eat ( ) ;
有抽象方法的类为抽象类,也要用abstract
特点:
A. 抽象方法和抽象类用关键字abstract表示
B. 含有抽象方法的类一定是抽象类(或者接口),抽象类中不一定有抽象方法
C. 抽象类不能被实例化,不能够创建对象。(可以通过子类实例化)
D. 抽象类中可以有构造方法
E. 如果一个类继承抽象类,那么这个类 要么本身也是抽象类,要么这个类重写父类的所有抽象方法。
作用:
强制要求子类必须完成某种功能方法
成员特点:
A. 成员变量 可以有成员变量,也可以有常量
B. 构造方法 有构造方法 (子类构造对象时初始化父类成员)
C. 成员方法 有抽象方法也可有非抽象方法
抽象方法:强制要求子类完成某种功能方法
非抽象方法:提高代码复用性,被子类继承
Abstract 不可以和final(不能继承和重写)、private(子类无法访问父类,更无法重写)、static(随着类的加载而加载,对象未建立,没有方法体)

接口(interface)

定义:对外暴露的规则,降低类间的耦合性。
要求:
特殊的抽象类,只存在抽象方法。
必须要有具体的类来实现(implements)
所有的抽象方法都必须得到重写
基本特点:
A. 接口不能够被实例化
B. 接口中的方法:要么被子类重写,要么子类也是抽象类
C. 要由子类去实现
成员特点(成员变量、成员方法、构造方法):
A. 成员变量:接口中只有常量(接口成员变量默认修饰符:public static final 自行给出修饰符)访问权限必须为public
B. 构造方法:没有构造方法(接口中只有常量,不需要赋值初始化)任何类如果没有继承父类,那么这个类就继承自object类
C. 成员方法:接口中方法都是抽象的,且权限必须为public (默认修饰符:public abstract)

接口和抽象类的区别:
A. 成员变量、成员常量、普通方法、构造方法、
B. 关系:继承关系 java可以实现接口的多继承
C. 设计理念:接口是更加抽象的一种规则
所有类都直接或者间接的继承自object类,object是所有类的超类

类和接口之间的关系

类与类:继承关系,而且只能单继承,可以多层继承
类与接口:实现关系,可以单实现,也可以多实现。
并且还可以在继承一个类的同时,实现多个接口
接口与接口:继承关系。可以单继承,也可以多继承。
抽象类:体现关系 is a (定义的是整个继承体系的共性内容)
接口:体现关系like a (定义的是整个体系中的扩展内容)
接口是一种特殊的抽象类,比抽象类更抽象!

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马