Java基础小结:
接口
接口就是功能的集合 里面定义多个抽象方法
定义格式
public interface 接口名{
抽象方法
}
接口的使用
类实现接口
1.接口不能创建对象
2.定义实现类,实现接口
3.重写方法
4创建实现类对象 调用方法
public class 类 impelemnts 接口{
重写方法
}
1. 接口的成员特点
1.接口没有构造方法
2.接口中的变量是 常量 public static final
3.接口中的方法都是抽象方法(JDK1.8之前) public abstract
接口特点
1.类可以在继承一个类的同时 实现多个接口
2.接口与接口之间是继承关系 可以多继承
接口与抽象类的区别
1.成员上的区别
构造方法
接口没有构造方法
抽象类有构造方法
成员变量
接口中都是常量
抽象类中可以是常量 也可以是变量
成员方法 **加粗样式**
接口中都是抽象方法
抽象类中可以是抽象方法 也可以是具体方法
2.思想上的区别
抽象类 描述的一类事物应该具备的最基本的属性和行为 是共性内容
接口 描述的是功能 体系之外的扩展功能
多态
前提
必须有继承或者是实现关系
方法重写
格式
父类引用 指向 子类对象
抽象类多态
抽象父类 变量名 = new 子类();
具体类多态
具体父类 变量名 = new 子类();
接口多态
接口 变量名 = new 实现类();
例如:
/*
具体类多态
具体的父类 变量名 = new 子类();
*/
Fu fz = new Zi();
fz.method();
System.out.println("-------------------");
/*
抽象类多态
抽象的父类 变量名 = new 子类();
*/
Animal a = new Cat();
a.eat();
System.out.println("-------------------------");
/*
接口多态
接口 变量名 = new 实现类();
*/
Fly f = new Bird();
f.fly();
多态后的成员特点
1.成员变量
编译时 看左边
运行时 看左边
2.成员方法
编译时 看左边
运行时 看右边
一切表现都是父类 只有方法运行的是子类重写后的方法
向上转型(自动类型提升)
int a = 10;
double b = a;
//多态本身就是向上转型
Zi zi = new Zi();
Fu fu = zi;
向下转型(强制类型转换)
double b = 10.1;
int a = (int)b;
Fu fz = new Zi();
Zi zf = (Zi)fz;
多态的好处与弊端
好处: 提供了程序的扩展性 方法的参数是父类 可以传入其任意子类对象
弊端 :多态后,不使用子类特有功能 如果想使用 要么重新创建一个新的子类对象 要么向下转型
boolean b = 对象 instanceof 类型;
判断某个对象 是否属于某种类型
例如:
Animal a = new Cat();
if(a instanceof Cat){
Cat c = (Cat)a;
}
if(a instanceof Dog){
Dog d = (Dog)a;
}