java基础之接口和多态

    接口和多态

1.接口的概述:
描述的是事物的一种扩展行为

定义接口的格式:
使用关键字 interface, 将定义类中的class换成interface即可
public interface 接口名{
// 成员变量(常量)如果是常量,一般习惯写成大写

// 成员方法(抽象方法)
}


接口中的成员特点:
成员变量: 默认被public static final修饰了,不管写不写都有
成员方法: 默认被public abstract 修饰了, 不管写不写都有

如何使用接口?
特点: 接口不能被new,不能被实例化
接口的使用方式, 研究类和接口之间的关系:
接口与类之间是实现关系, 使用关键字 implements
格式: public class 类A implements 接口名A{
覆盖接口中的所有抽象方法, 除非这个类也是抽象类.
}

1> 一个类实现一个接口
格式: public class 类A implements 接口A{....}

2> 一个类实现多个接口
格式: public class 类A implements 接口A, 接口B{....}

3> 一个类继承另外一个类, 实现多个接口
格式: public class 类A extends 类B implements 接口A,接口B{...}

福利:
面试题一:
interface InterA{
void method();
}

interface InterB{
void method();
}

class MyClass implements InterA, InterB{
// 这里需要实现几个方法? 实现一个即可.
public void method(){
}
}

面试题二:
interface InterA{
void method();
}

class Fu{
public void method(){}
}

class Zi extends Fu implements InterA{
// 需要实现方法吗? 答: 不需要实现方法了, 因为已经从父类中继承过来了对应的method方法
}


2. 多态: 体现的是事物的多种状态 (强调的是事物的行为)
多态的表现形式
1> 必须要有继承关系, 一般会伴随着方法重写.
2> 父类的引用指向子类的对象.
格式:
父类类型(抽象类) 变量名 = new 子类类型();
接口 接口名 = new 实现类();

使用:
父类的引用.方法名();
编译的时候看父类, 运行的时候看子类;
如果父类没有就编译报错

3. 多态的好处:

接口的多态表现形式:
1> 需要有实现关系;
2> 接口变量类型指向实现类对象;

代码格式:
接口 接口名 = 实现类对象;

多态的四种使用形式:
1> 类(抽象类)作为方法的参数传递, 传递的是该类的子类对象
2> 类(抽象类)作为方法的返回值, 返回的是该类的子类对象
3> 接口作为方法的参数, 传递的是实现类对象
4> 接口作为方法的返回值, 返回的是实现类对象.

在多态的格式下面,使用内容的特点:
成员方法:
编译看左边, 运行看右边;

成员变量:
编译看左边, 运行看左边

多态的好处:
1> 可以作为方法的参数进行传递,无限扩展子类
2> 可以作为方法的返回值.

4. 缺点: 不能调用子类特有的方法, 因为编译看左边,运行看右边

如何调用子类特有方法:
向上转型: 小的数据类型转换成大的数据类型(多态体现)
向下转型: 大的类型转换成小的类型, 但是有风险

如果解决向下转型的风险:
需要使用到关键字 instanceof; 判断该引用是否是该类的实例对象.
使用格式: 引用类型 instanceof 类名称;// 返回值类型是一个boolean类型

 

posted on 2017-12-23 21:22  悠悠一小生  阅读(361)  评论(0编辑  收藏  举报