java中多态详解

1.多态定义:

同一个行为具有多个不同表现形式或形态的能力。

2.多态形式:

父类:

public class Father {
    public void work(){
        System.out.println("爸爸要工作!");
    }
}

子类:

public class Child extends Father{
    public void work(){
        System.out.println("小孩只知道睡觉");
    }
}

测试类:

public class Demo {
    public static void main(String[] args) {
        Father f = new Child();
        f.work();
    }
}

可以发现多态:

  1. 存在继承关系
  2. 有方法的重写
  3. 父类引用指向子类对象, Father f = new Child();

3.多态中成员的特点

多态成员变量:编译看左边,运行看左边
多态成员方法:编译看左边,运行看右边
父类:

public class Father {
    int age =48;

    public void eat(){
        System.out.println("爸爸要吃饭");
    }
    public void work(){
        System.out.println("爸爸要工作");
    }
}

子类:


public class Child extends Father{
    int age = 5;
    int weight =20;
    @Override
    public void eat() {
        System.out.println("儿子要吃饭");
    }
}

测试类:

public class Demo {
    public static void main(String[] args) {
        Father f = new Child();
//        System.out.println(f.weight);//错误
        System.out.println(f.age);//48

        f.eat();//儿子要吃饭
        f.work();//爸爸要工作

    }
}

4.多态中的转型

向上转型:父类引用指向子类对象(子类转换为父类)
向下转型:父类引用转为子类对象(父类转换为子类)

Father f =new Child();

Child c =(Child)f;

父类:

public class Father {
    int age =48;

    public void eat(){
        System.out.println("爸爸要吃饭");
    }
    public void work(){
        System.out.println("爸爸要工作");
    }
}

子类:


public class Child extends Father{
    int age = 5;
    int weight =20;
    @Override
    public void eat() {
        System.out.println("儿子要吃饭");
    }
}

测试类:

public class Demo {
    public static void main(String[] args) {
//        1.向上转型
        Father f = new Child();
        System.out.println(f.weight);//错误
//        System.out.println(f.age);//48
//
//        f.eat();//儿子要吃饭
//        f.work();//爸爸要工作

//      2.向下转型    
      
        Child c = (Child)f;

        System.out.println(c.age);//2
        System.out.println(c.weight);//20
        
        c.eat();//儿子要吃饭
        c.work();//爸爸要工作
        
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值