java——多态

1.多态的概念

多态:在完成某个行为的时候,不同的对象去完成的时候会产生不同的结果。

举个现实生活的例子,同样是吃潮汕生腌,有的人吃完后没啥事,有的人吃完会严重腹泻。

总的来说:同一件事情,发生在不同的对象上,产生不同的结果。

2.重写

在介绍多态之前我们需要认识重写

重写(override):也称为覆盖。重写是子类对父类非静态、非private修饰,非final修饰,非构造方法等的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定
于自己的行为。 也就是说子类能够根据需要实现父类的方法。
【方法重写的规则】
1.子类在重写父类的方法时,一般必须与父类方法原型一致: 返回值类型 方法名 (参数列表) 要完全一致


2.被重写的方法返回值类型可以不同,但是必须是具有父子关系的

3、访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类方法被public修饰,则子类中重写该方法就不能声明为 protected

4.父类被static、private修饰的方法、构造方法都不能被重写。


5.重写的方法, 可以使用 @Override 注解来显式指定. 有了这个注解能帮我们进行一些合法性校验. 例如不小心将方法名字拼写错了 (比如写成 aet), 那么此时编译器就会发现父类中没有 aet 方法, 就会编译报错, 提示无法构成重写.

6.重写与重载的区别如下

3.多态的实现条件

1.必须在继承体系下

2.子类必须要对父类中的方法重写

3.通过父类的引用调用重写的方法

多态的体现:在代码运行时,当传递不同类对象时,会调用对应类中的方法

public class TestAnimal
{
  public static void eat(Animal a){
     a.eat();
  }

   public static void main(String[] args) {
      Cat cat=new Cat("阿花",2);
      Dog dog=new Dog("阿财",5);
      eat(cat);
      eat(dog);
   }
}
public class Cat extends Animal{
    public Cat(String name,int age){
        super(name,age);
    }
    public void eat(){
        System.out.println(name+"吃小鱼干");
    }
}
public class Dog extends Animal {
    public Dog(String name,int age){
        super(name,age);
    }
    public void eat(){
        System.out.println(name+"吃小骨头");
    }
}

public class Animal {
    String name;
    int age;

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public void eat(){
        System.out.println(name+"吃饭");
    }
}

运行结果为

阿花在吃小鱼干

阿财在吃小骨头

当a在调用eat方法时,eat有不同的表现这种行为就被称为多态

4.向上转型与向下转型

向上转型的实质就是创建一个子类对象,将其当做父类对象使用

语法格式:父类类型 对象名=new 子类类型()

使用场景:

1.直接赋值

2.方法传参

3.方法返回

向上转型的优点:让代码的实现更加灵活,缺陷是不能调用子类特有的方法。

向下转型:将父类引用还原为子类对象

5.多态的优缺点

优点:

1.能有效降低代码的圈复杂度避免使用大量的if——else

2.可扩展能力强

缺陷:

代码的运行效率低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值