JAVA认识多态

1.多态的概念

不同的对象完成某个相同行为,产生出了不同的状态。(同一件事情,发生在不同的对象上,产生不同的结果)

2.实现多态的条件

  1. 必须在继承体系下
  2. 子类必须要对父类中方法进行重写
  3. 通过父类的引用调用重写方法

多态的体现:传递不同的对象,会调用对应类中的方法

3.重写(覆盖)

子类对父类非静态,非private、final修饰,非构造方法等的实现过程重写,子类能够根据需要实现父类方法。

重写规则:

  1. 方法名必须相同
  2. 参数列表必须相同(类型,个数,顺序)
  3. 返回值必须相同(可以不同,但必须具有父子关系)

注意事项:1.访问权限要大于等于父类被重写的方法的访问权限

private<默认权限<protected<public

2.可以使用@Override注解来显示定义(帮助效验)

4.向上/下转型

1.向上转型

小范围向大范围的的转换,父类引用子类对象

语法格式:

父类类型 对象名=new 子类类型()

缺点:不能调用子类特有的方法

2.向下转型

将父类引用还原为子类对象(实现调用子类特有的方法)

例:类bird中有fly()方法(子类特有的),Animal(父类)

Animal animal = new Bird()

Bird bird = (Bird)animal

bird.fiy()

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 + "吃饭");
}
}
public class Cat extends Animal{
public Cat(String name, int age){
super(name, age);
}
@Override
public void eat(){
System.out.println(name+"吃鱼~~~");
}
}
public class Dog extends Animal {
public Dog(String name, int age){
super(name, age);
}
@Override
public void eat(){
System.out.println(name+"吃骨头~~~");
}
}
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("小七", 1);
eat(cat);
eat(dog);
}
}
运行结果:
元宝吃鱼~~~
元宝正在睡觉
小七吃骨头~~~
小七正在睡觉

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值