java面向对象的多态_Java面向对象之多态

java面向对象三大特征:封装,继承,多态

多态的定义:

1、实现关系下的多态,接口的引用类型变量指向了接口实现类的对象

2、继承关系下的多态,父类的引用类型变量指向了子类的对象

继承关系下的多态:

我们定义一个动物类。并定义一个鸟类和老鼠类分别作为动物类的子类

public abstract class Animal {

String name;

public Animal(String name){

this.name = name;

}

public abstract void Run();

}

public class Bird extends Animal {

public Bird(String name){

super(name);

}

@Override

public void Run() {

System.out.println(name+"跑的不快。。。");

}

public void Fly(){

System.out.println(name+"飞的高。。。");

}

}

public class Mouse extends Animal {

public Mouse(String name){

super(name);

}

@Override

public void Run() {

System.out.println(name+"飞快的跑。。。");

}

public void Dig(){

System.out.println(name+"会打洞。。。");

}

}

这个时候可以使用多态:

public static void main(String[] args){

Print(new Bird("百灵")); == Animal a = new Bird("百灵")

Print(new Mouse("家鼠")); == Animal a = new Mouse("家鼠") 这就是多态的使用,父类的引用类型变量指向了子类的对象

}

public static void Print(Animal a){ 、、定义一个方法,接受一个对象,根据对象类型执行对象的方法:

if(a instanceof Mouse){

Mouse m = (Mouse)a;     //多态情况下,因为不能访问子类特有的成员,,因为打洞是老鼠特有的成员函数,所以这里要使用强制类型转换,然后再去访问子类特有的成员。。。。。

m.Dig();

}else if(a instanceof Bird){

Bird b = (Bird)a;

b.Fly();

}else{

System.out.println("该动物未定义。。。");

}

}

实现关系下的多态:

定义一个接口Dao,同时定义一个Dao接口的实现类UserDao

public interface Dao {    //定义一个Dao接口

public void add();

public void delete();

}

public class UserDao implements Dao{      //定义接口的实现类,并对方法实现

public void add(){

System.out.println("添加成员成功!!");

}

@Override

public void delete() {

System.out.println("删除员工成功!!");

}

}

调用该接口:

public static void main(String[] args){

Dao d = new UserDao(); //实现关系下的多态 接口的引用类型变量指向了接口实现类的对象(对比于继承关系下的多态,父类的引用类型变量指向了子类的对象)

d.add();

d.delete();

}

多态的注意事项:

1、多态情况下,子父类存在同名的成员变量时,访问的是父类的成员变量

2、多态情况下,子父类存在同名的非静态的成员函数时,访问的是子类的成员函数

3、多态情况下,子父类存在同名的静态的成员函数时,访问的是父类的成员函数

4、多态情况下,不能访问子类特有的成员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值