一 多态性是面向对象的三大特征之一
多态的含义是:对外一种表现形式,内在有多种具体实现
Java中多态的具体体现
方法重载
方法覆盖
多态参数(新内容,重点、难点)
多态环境下对象造型
向下造型 –又称向下转型
向上造型 –又称向上转型
例如:(里面包含了多态的对象造型等)
public class aabb {
public static void main(String[] args) {
dog aDog=new dog();
aDog.eat1();
aDog.jiao();
Animal animal=new dog();
dog x= (dog)animal;
x.play();
Animal a= new pig();
pig y=(pig)a;
y.play();
y.eat2();
cat Cat=new cat();
Cat.he();
Cat.eat();
//Animal b = new cat();
//b.eata();
}
}
class Animal {
void play(){
System.out.println("猫在玩小球球");
} void eata(){
System.out.println("动物吃肉");
}
}
class cat extends Animal{
void eat(){
//super.eata();
System.out.println("猫喝着喝着又饿了,于是跳到河里捉鱼,不幸的是它被淹死了");
}
void he(){
System.out.println("之后猫跑到河边喝水");
}
}
class dog extends Animal{
void eat1(){
System.out.println("狗饿的汪汪的叫");
}void jiao(){
System.out.println("之后找到骨头在吃骨头");
}
}
class pig extends Animal{
void eat2(){
System.out.println("一头猪在旁边肆无忌惮的吃草");
}
}
二 抽象类
用abstract修饰的类就是抽象类。如果某个类中包含有抽象方法,那么该类就必须定义成抽象类。但是抽象类中不一定有抽象方法。
关键字abstract定义抽象类,一般语法:
[访问权限] abstract class 类名 {
成员列表
}
抽象类只能用作基类,表示的是一种继承关系。继承抽象类的非抽象类必须实现其中的所有抽象方法,而已实现方法的参数、返回值要和抽象类中的方法一样。否则,该类也必须声明为抽象类。
关键字abstract声明抽象方法,一般语法:
[访问权限] abstract 返回值类型 方法名称(参数列表);
抽象的作用
在面向对象领域,抽象类主要用来进行类型隐藏;也就是使用抽象的类型来编程,但是具体运行时就可以使用具体类型。
利用抽象的概念,能够在开发项目中创建扩展性很好的架构,优化程序。
抽象类,抽象方法,在软件开发过程中都是设计层面的概念。也就是说,设计人员会设计出抽象类,抽象方法,程序员都是来继承这些抽象类并覆盖抽象方法,实现具体功能。
三 Java接口是一系列方法的声明,是一些抽象的集合
接口的基本格式
[修饰符] interface 接口名 [extends 父接口名列表]{
[public] [static] [final] 常量;
[public] [abstract] 方法;
}
接口名:必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写。
extends 父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends关键字时,父接口名为必选参数。父接口可以存在多个,用逗号隔开。
方法:接口中的方法只有定义而没有被实现
Java接口继承接口的原则:
Java接口可以继承多个接口
接口继承接口依然使用关键字extends
接口继承与类继承对比:Java类的继承是单一继承,Java接口的继承是多重继承。
类实现接口的基本格式:
[修饰符] class <类名> [extends 父类名] [implements 接口列表]{
}