多态与强制转型

多态
同一个方法的调用,不同的对象出现不同的行为。
多态是方法的多态。
多态存在的三个必要条件:继承、重写、父类引用指向子类对象。
用父类引用调用子类重写方法。

public class _2_23Demo {

    public static void main(String[] args) {
        //1.多态
//        ChildClass cc = new ChildClass();
//        类似与静态初始化
//        cc.f();
//        Animal a = new Animal();
//        Cat cat = new Cat();
//        Animal a = new Dog();
//        a.shout();
//        AnimalCry(cat);



        //2.访问控制符的使用
//        public可以跨包 其余都不可以



          //3.强制转型
//        Animal a = new Dog();  //编译器认为它是Animal,它本质是Dog
//        a.shout();  //运行是汪汪汪 但没有seeDoor方法 编译器认为和本质还是有区别的
//
//        Dog a1 =(Dog)a; //强制转型
//
//        Animal b =new Cat();
//        Dog b1 = (Dog)b;    //本质是一只猫 转过来就有问题 classCastException
//        b1.seeDoor();       //编译和实际运行还是不一样的


          //4.final的使用
//        final关键字class不能继承,方法不能重写,变量变成常量只能赋一次值
    }

    static void AnimalCry(Animal a){
        a.shout();
    }
}
class FatherClass{

    public int value;

    public FatherClass(){
        System.out.println("调用父类方法");
    }

    public void f(){
      this.value=100;
      System.out.println(value);
    }
}

class ChildClass extends  FatherClass{

    public int value;
    public ChildClass(){
        super();   //有没有这个方法系统都会帮你默认添加
        System.out.println("调用子类方法");
    }
    @Override
    public void f() {
        super.f();   //super调用父类的引用
        this.value=200;
        System.out.println(value);
        System.out.println(super.value);   //调用父类的变量
    }
}



class Animal{

    public void shout(){
        System.out.println("叫了一声");
    }
}

class Dog extends Animal{

    @Override
    public void shout() {
        System.out.println("汪汪汪");
    }

    public void seeDoor(){
        System.out.println("看门");
    }
}

class Cat extends Animal{
    @Override
    public void shout() {
        System.out.println("喵喵喵");
    }
}

class User{
    int age;
    String name;

    public User(int age) {
        this.age = age;
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值