JAVA基础:多态

多态
定义:一种事物的多种形态
以笔类为例:
铅笔、钢笔、毛笔。。。。。。
多态的规则:
1、类与类之间要建立关系,建立继承的关系;
2、必须要有方法的重写;
3、父类的指针(引用)指向子类的对象;

需求:创建 动物类、猫类、狗类
都有一个吃的方法 动物类 动物吃饭
猫 猫吃鱼
狗 狗吃骨头

public class Demo01 {

public static void main(String[] args) {

    Cat c = new Cat();
    c.eat();


    Animal a = new Cat();

    a.eat();
    Animal aDog = new Dog();
    aDog.eat();


}

}
class Animal{
public void eat(){
System.out.println();
}
}
class Cat extends Animal{
public void eat() {
System.out.println(“猫吃鱼”);
}
}

class Dog extends Animal{
public void eat() {
System.out.println(“够吃骨头”);
}

}
多态时 成员变量是如何调用的:

多态时当父类引用成员变量时
编译 需要看父类中有没有这个成员变量 没有编译不会通过
运行 访问就是父类中的成员变量
多态时 父类访问成员变量 编译 和 运行(看父类)

多态时 如何访问成员方法?在内存如何表现?
多态调用成员方法时
编译时 看父类中有没有这个方法 没有就报错
运行时 运行时 运行子类这个方法
所以:编译时看父类
运行时也看父类

成员变量运行时全看父类

public class Demo02 {

public static void main(String[] args) {
    Father f = new Son();

    f.speak();
    System.out.println(f.num);

    Son s = new Son();
    System.out.println(s.num);
}

}
class Father{

int num = 10;
public void speak() {
    System.out.println("Father 说");
}

}
class Son extends Father{
int num = 20;
public void speak() {
System.out.println(“son 说”);
}
}

多态:
好处:
1、增强了代码可维护性(建立在继承基础上)
2、增强代方法的可扩展性(核心)
弊端:不能直接调用子类的特殊(不是重写父类的)方法
ublic class Demo03 {

public static void main(String[] args) {

    Person p = new Pianzi();

    p.speak();

    Pianzi pianzi = (Pianzi)p;
    pianzi.hit();
}

}
class Person{

public void speak() {
    System.out.println("聊天 侃大山");
}
public void hit() {
    System.out.println("锤你");
}

}

class People extends Person{

}

class Pianzi extends Person{
public void speak() {
System.out.println(“洗脑”);
}
public void hit() {
System.out.println(“锤你—杀人防火”);
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值