构造器和多态(Chapter8.3)】的更多相关文章

构造器不具有多态性(它们是static方法,只不过该static声明是隐式的),但还是非常有必要理解构造器怎样通过多态在复杂的层次结构中运作,这一理解将有助于大家避免一些令人不快的困扰. 在main中创建对象调用构造器的顺序: 将分配给对象的存储空间初始化成二进制的零. 调用基类构造器. 按声明顺序调用成员的初始化方法. 调用导出类构造器的主体. //: polymorphism/Sandwich.java // Order of constructor calls. package polym…
public class TestC { public static void main(String []args) { new Graph(5); }}class Grp{ void draw() { System.out.println("draw...."); } Grp() { draw(); }}class Graph extends Grp{ private int radius = 2; Graph(int radius){ this.radius = radius;}…
java  基础知识十   继承和多态 继承 1.定义: 继承是指声明一些类,可以再进一步声明这些类的子类,而子类具有父类已经拥有的一些方法和属性,这跟现实中的父子关系是十分相似的,所以面向对象把这种机制称为继承 继承就是在现有类的基础上构建新类以满足新的要求 子类==派生类,子类只能有一个父类,父类可以有多个子类 注意:final类 方法 变量 不能被继承 2.声明:class 子类 extends 父类 比如:public class VipUser extends User 注意:子类构造…
在上一节的学习中,强调继承一般在需要向上转型时才有必要上场,否则都应该谨慎使用: 向上转型和绑定 向上转型是指子类向基类转型,由于子类拥有基类中的所有接口,所以向上转型的过程是安全无损的,所有对基类进行的操作都可以同样作用于子类:如示例代码中,Music.tune方法调用时,需要的参数是基类Instrument,而传入一个子类:Wind类的对象时,该方法一样可以被调用,并且play方法执行的是Wind类的对象重载的方法: 在向上转型的设计中,只编写和基类打交道的代码,这样所有的特定子类都可以正确…
一.对象与类 类:类是一个模版,它描述了一类对象的行为和状态. class animal { private int color; private int size; public void eat () { System.out.println("I'm eating!"); } public void sleep () { System.out.println("I'm sleeping!"); }}        上面一段代码就定义了一个animal类,它在内…
再论向上转型 在某些方法中,仅接收基类作为参数,而不是特殊的导出类,会使得程序更容易扩展. 转机 方法调用绑定 前期绑定(编译期绑定):在编译期将一个方法调用和方法主体关联起来. 后期绑定(动态绑定或运行时绑定):在程序运行阶段,判断对象类型,将方法调用与方法主体绑定. Java中除static方法和final方法外,其他所有的方法都是后期绑定. 只有非private的方法才可以被覆盖:与private重名的方法,是一个全新的方法. 只有普通的方法调用时多态的.如果访问某个成员变量,则在编译期就…
一.封装 封装是指将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类提供的对外方法进行内部信息的操作和访问. 封装可以达到以下目的: 1)隐藏类的实现细节 2)让使用者只能通过事先预定的方法访问数据,从而可以在该方法了加入控制逻辑,限制对成员变量的不合理访问 3)可进行数据检查,从而有利于保证数据信息的完整性 4)便于修改,提高代码的可维护性. 为了实现良好的封装,需要从两方面考虑: 1)把对象的成员变量和实现细节隐藏起来,不允许外部直接访问 2)把方法暴露出来,让…
java中所有的继承都是公有继承. 在子类中的构造其内可以初始化超类的公有域,但不能初始化超类的私有域. 因此需要在子类构造前的第一行使用super()语句初始化超类的私有域. 如果超类没有不带参数的构造器,而子类没有显式的调用超类的其他构造器,则会出现编译错误.因为编译器无法调用超类的默认构造器. 多态 A为超类,B为子类.则A的变量既可以引用A类的对象,也可以引用B类的对象. 动态绑定 当调用x.f(param)时,若x为C类的对象. 一:编译器列举C类中所有的名为f的方法和其超类中访问属性…
1.向上转型 把子类引用当作父类引用.(子类对象赋值给父类引用) 2.绑定 确定方法属于哪个类. 3.前期绑定 程序执行前绑定. 4.后期绑定也叫动态绑定 程序运行时绑定. 5.多态 多个不同的对象对同一消息作出响应,同一消息根据不同的对象而采用各种不同的行为方法. 多态分为方法的重载和重写. 6.构造器和多态 6.1 域 与静态方法(包括构造器)不具有多态性. 6.2 构造器内可以多态,调用子类中被覆写的方法,但不安全. 6.3 构造器内可以安全调用的方法只有基类的final方法. 知识点 私…
"封装"通过合并特征和行为来创建新的数据类型: "实现隐藏"通过将细节"私有化"把接口和实现分离开来: "多态"消除类型之间的耦合关系(多态也称为动态绑定.后期绑定或运行时绑定): 再说 final Java 中除了 static 方法和 final 方法(private 方法属于 final 方法)之外,其他所有的方法都是后期绑定.也就是说,final 可以"关闭"动态绑定. 多态缺陷一:"覆盖…