JAVA-多态与继承

JAVA-继承

1.java支持单继承
2.B类继承于A类

  • A类:父类,基类,超类,superclass
  • B类:子类,subclass

3.java中如果没有显式继承于任何类,那么它默认继承于java.lang.Object类。
4.java中可以继承父类的哪些数据呢?

  • 私有的不可以被继承
  • 构造方法不支持继承
  • 其他数据都可以被继承

JAVA-多态

多态语法机制
1.向上/向下转换

  • 向下类型转换(upcasting):父类转化为子类,是自动类型转换 eg:Animal ani = new Cat();//合理:cat is an animal.
  • 向上类型转换(downcasting):子类转换为父类,需要强制转换

2.多态的实现必须是继承的关系。
3.私有的不可以被继承
4.构造方法不支持继承
5.其他数据都可以被继承

**

静态绑定和动态绑定

**
**静态绑定:**发生在编译阶段,进行语法检查,检查通过才可以运行
**动态绑定:**发生在运行阶段

public class ExtendTest {

    public static void main(String[] args) {
        Animal ani = new Cat(); //cat is an animal.
        /*java程序运行包括编译阶段和运行阶段
        1.先编译后执行,编译不通过,就无法执行。
        2.编译阶段先检查ani这个引用的类型是Animal,由于Animal.class字节码中包含doSome()方法,所以编译通过,称为静态绑定(只检查语法)。只有静态绑定成功才能运行。
        3.在程序运行阶段,JVM堆内存中真是创建的是Cat对象,那么运行阶段后执行Cat对象的doSome()方法,这叫做动态绑定。
        4.无论Cat里面有没有doSome()方法,运行阶段调用的Cat对象的doSome()方法。
        */
        ani.doSome();		  //运行阶段调用的Cat对象的doSome()方法。
        //ani.catchMouse();   //**报错:该访问为什么不可以调用?**
                            //因为编译阶段检查到的ani是Animal类型,Animal.class字节码文件中没有catchMouse()方法,所以无法运行。编译失败,因此无法运行。


        /*
        什么时候需要向下转型?
        1.调用的方法是子类中特有的,在父类中不存在,必须向下转型.
        2.在进行强制转换之前,建议采用instanceof运算符进行判断
        */
        if(ani instanceof Cat)
        {
            Cat c = (Cat)ani;
            c.doSome();
        } else if (ani instanceof Bird) {
            Bird b = (Bird)ani;
            b.doSome();
        }else
        {
        }
    }
}


class Animal{
    public void doSome()
    {
        System.out.println("动物在走路");
    }
    public void haha()
    {

    }
}


class Cat extends Animal{
    public void doSome()
    {
        System.out.println("猫在跑");
    }

    public void CatchMouse()
    {
        System.out.println("猫在捉老鼠");
    }
}

class Bird extends Animal{
    public void doSome()
    {
        System.out.println("鸟在飞");
    }

    public void DrinkWater()
    {
        System.out.println("鸟在喝水");
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值