对象转型casting 及其动态绑定及多态

分为向上转型 和 向下转型

以前碰到的 int 》float 等等都是对象转型

 基类的引用类型可以指向子类的变量

eg。入动物  和 狗的关系 狗是动物  叫你传一条动物 你传一条狗 行啊

一个基类的引用不能访问子类对象新增的成员(属性和方法)。 当要传动物  别人传一狗 则这是不能把狗当当狗访问。

需要访问的话 可以强制转换

 

3.可以使用引用 变量instanceof 类名 来判断该引用变量是否属于该类或该类的子类

   instanceof是看内存中到底是什么 而不是看引用

 

 

 

 

 

java 可扩长性好 基类的引用可以指向子类  

 

 

动态绑定 多态 可以提供不错的扩张型

比单独定义几个方法好

最核心的机制 动态绑定  polymorphism

 在执行的时候确定哪个类 决定用哪个方法

 

!!内部类最复杂的机制

 

public class Animal {

  private String   name;

 Animal(String name){this。name=name;}

 public void enjoy(){Sysytem。out。println(“叫声。。。”);

}

 

class cat extends Animal {

 private String color;

  Cat(String name,String color){this。name=name; this。name = color;}

  public void enjoy(){System.out。ptintln(“猫叫。。。”);}

}

class Lady {

  private String name;

 private Animal pet;

 Lady(String name,Animal pet){this。name= name,this。pet = pet;}

 public void enjoy() { pet。enjoy();}

 

public class Test {

}

内存分布

 

实际当中new的什么类型 就调用谁 

 

更深的机制是  new里面有指针 指向对用代码段的方法

 

 

 

 

 

这就是 动态绑定 多态  迟绑定

 

好处:程序的可扩长性

  比如 上面要加入鸟的叫声 直接加  这就是面向对象的核心!!!!!!!!!!核心中的核心!!!!!!!!!

 

 

 

 

多态的存在有三个必要条件:1 要有继承

                                       2 要有重写

                                       3 父类引用指向子类对象

体会程序的可扩充性  

分析游戏物体的多态包装

eg. 

 

class  GameObject{

}

 

    其它所有类都从中继承

 

 

!!abstract 抽象类

用一个abstrct修饰一个类,该类叫抽象方法

 

抽象类不能实例化(残缺的类)

没有实现的必要

在子类中 迟早去实现相应的方法

只需要定义 不需要实现!!! (有高兴的方法 但具体高兴怎么表现 又是不同的)

 

抽象方法abstract

 

一定要重写 不然肯定出问题

 

有抽象方法 一定抽象类

 

子类一定要重写 要么继续抽象

抽象方法 只需声明无需实现

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值