正在加载图片...
Animal a=new Dog);查看格式名称; Dogd=(Dog)a。声明父类来引用子类。 (思考上面的格式) 运行时多态的三原则:(应用时为履盖) 1、对象不变;(改变的是主观认识) 2、对于对象的调用只能限于编译时类型的方法,如调用运行时类型方法报错。 在上面的例子中:Animal a=new Dog();对象a的编译时类型为Animal,运行时类型为dog。 注意:编译时类型一定要为运行时类型的父类(或者同类型)。 对于语句:Dogd=(Dog)a。将d强制声明为a类型,此时d为Dog0,此时d就可以调用运行时类型。 注意:a和d指向同一对象。 3、在程序的运行时,动态类型判定。运行时调用运行时类型,即它调用覆盖后的方法。 关系运算符:instanceof a instanceofAnimal;:(这个式子的结果是一个布尔表达式) a为对象变量,Animal是类名。 上面语句是判定a是否可以贴Animal标签。如果可以贴则返回true,否则返回false。 在上面的题目中:a instanceof Animal返回True, a instanceof Dog也返▣True, instanceof用于判定是否将前面的对象变量赋值后边的类名。 Instanceof一般用于在强制类型转换之前判定变量是否可以强制转换。 如果Animal a=new Animal(; Dog d=DogOa; 此时编译无误,但运行则会报错。 Animal a=new Dog0相当于下面语句的功能: Animal a=getAnimalO; Public static Animal.getAnimal; Return new DogO; 封装、继承、多态为面向对象的三大基石(特性)。 运行时的动态类型判定针对的是方法。运行程序访问的属性仍为编译时属性。 Overloading针对的是编译时类型,不存在运行时的多态。 习题:建立一个shape类,有circle和rect子类。 Shape类有zhouchang(0和area()两种方法。 (正方形)squ为rect子类,rect有chaO用于比较长宽的差。 覆盖时考虑子类的private及父类的public(考虑多态),之所以这样是避免调用A时出现实际调用B 的情况。而出现错误。 11.29下午讲的是教程上的Module6 Module6-7包括:面向对象高级、内部类、集合、反射(暂时不讲)、例外。 面向对象高级、集合和例外都是面向对象的核心内容。 面向对象高级: 修饰符: 达内java学习笔记达内 java 学习笔记 5 Animal a=new Dog();查看格式名称; Dog d=(Dog)a。声明父类来引用子类。 (思考上面的格式) 运行时多态的三原则:(应用时为覆盖) 1、 对象不变;(改变的是主观认识) 2、 对于对象的调用只能限于编译时类型的方法,如调用运行时类型方法报错。 在上面的例子中:Animal a=new Dog();对象 a 的编译时类型为 Animal,运行时类型为 dog。 注意:编译时类型一定要为运行时类型的父类(或者同类型)。 对于语句:Dog d=(Dog)a。将 d 强制声明为 a 类型,此时 d 为 Dog(),此时 d 就可以调用运行时类型。 注意:a 和 d 指向同一对象。 3、 在程序的运行时,动态类型判定。运行时调用运行时类型,即它调用覆盖后的方法。 关系运算符:instanceof a instanceof Animal;(这个式子的结果是一个布尔表达式) a 为对象变量,Animal 是类名。 上面语句是判定 a 是否可以贴 Animal 标签。如果可以贴则返回 true,否则返回 false。 在上面的题目中: a instanceof Animal 返回 True, a instanceof Dog 也返回 True, instanceof 用于判定是否将前面的对象变量赋值后边的类名。 Instanceof 一般用于在强制类型转换之前判定变量是否可以强制转换。 如果 Animal a=new Animal(); Dog d=Dog()a; 此时编译无误,但运行则会报错。 Animal a=new Dog()相当于下面语句的功能: Animal a=getAnimal(); Public static Animal.getAnimal; Return new Dog(); 封装、继承、多态为面向对象的三大基石(特性)。 运行时的动态类型判定针对的是方法。运行程序访问的属性仍为编译时属性。 Overloading 针对的是编译时类型,不存在运行时的多态。 习题:建立一个 shape 类,有 circle 和 rect 子类。 Shape 类有 zhouchang()和 area()两种方法。 (正方形)squ 为 rect 子类,rect 有 cha()用于比较长宽的差。 覆盖时考虑子类的 private 及父类的 public(考虑多态),之所以这样是避免调用 A 时出现实际调用 B 的情况。而出现错误。 11.29 下午讲的是教程上的 Module6 Module6-7 包括:面向对象高级、内部类、集合、反射(暂时不讲)、例外。 面向对象高级、集合和例外都是面向对象的核心内容。 面向对象高级: 修饰符:
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有