黑马程序员技术交流社区
标题:
Java基础笔记之九
[打印本页]
作者:
啊海
时间:
2016-4-6 23:58
标题:
Java基础笔记之九
多态:
事物的多种形态
前提条件:
有继承
重写
父类引用指向子类对象
多态中成员变量的访问特点:
编译看左边,运行看左边
多态中成员方法的访问特点:
编译看左边,运行看右边(动态绑定)
多态中静态成员方法的访问特点:
编译看左边,运行看左边
所以不算重写
基本数据类型的类型转换:
隐式转换:
int a = 10;
byte b = 20;
a = a + b;
强制转换:
byte b1 = 10;
byte b2 = 20;
byte b3 = (byte)(b1 + b2);
引用数据类型的类型转换:
向上转型:
用父类引用指向子类对象,本质是缩小了访问范围
向下转型:
用子类引用指向子类对象,本质恢复子类本来就应该有的访问范围
多态的好处和弊端:
好处:
1、提高代码的复用性,可维护性
2、提高代码的可扩展性
弊端:
不能访问子类特有的成员
instanceof 用来判断引用所代表的对象的类型,返回值为boolean
ClassCastException 类型转换异常
抽象类:
看不见摸不着没有具体内容的
抽象类的特点:
1、定义方法:
抽象类的定义方法;
abstract class 类名 {
}
抽象方法的定义:
public abstract void 方法名();
2、抽象类的抽象方法的关系:
抽象类中不一定有抽象方法,抽象方法一定在抽象类中
3、抽象类的实例化
使用多态的方法来解决,用子类来进行实例化
4、子类命运:
还是抽象类
重写抽象类中所有的抽象方法
抽象类中成员的特点是什么:
成员变量:
可以是变量,也可以是常量,不能被抽象,不能被abstract修饰
构造方法:
必须有,用于子类继承时候,创建子类对象,对抽象类中的成员变量进行初始化
成员方法:
可以抽象,也可以不被抽象
抽象方法,非抽象子类必须重写此方法
不抽象方法,子类继承,提高代码的复用性
面试题:
abstract不能和那些关键字共存:
static,static修饰的方法可以被类名.的方式来调用,调用一个abstract修饰的方法,没有意义
final,final修饰方法不能被重写,abstract修饰的方法必须被重写
private,private修饰的方法无法被子类看到,也无法重写,abstract修饰的方法必须重写
接口:
接口的特点:
接口的定义:
interface 接口名 {
}
实现这个接口:
class 类名 implements 接口名 {
}
接口的实例化:
使用多态来解决,使用其实现类来进行实例化
接口的实现类:
抽象类,意义还是挺大的
具体类,推荐
接口成员的特点:
1、成员变量只能是常量,默认的修饰符:public static final,建议手动写出
2、构造方法:没有,干爹
3、成员方法;都是抽象的,默认的修饰符:public abstract,建议手动写出
类与类:
继承,只能单继承,可以多层继承
类与接口:
实现关系,可以单实现,也可以多实现
还可以在继承一个类的同时,实现多个接口
接口与接口:
继承关系,可以单继承,可以多继承,可以多层继承
抽象类与接口的区别:
1、成员变量:接口必须是常量,抽象类可以是常量,也可以是变量
2、构造方法:接口没有,抽象类有
3、成员方法:接口的成员方法必须是抽象,抽象类可以抽象,也可以不抽象
设计理念的区别:
抽象类:is a的关系,该体系的共性功能
接口:like a的关系,定义一些扩展功能
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2