java构造器内部多态方法

/** * Created by Administrator on 2017/3/7. */

/** * @author zhenghong * @date 2017-03-07-21:21 **/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;}    @Override    void draw() {        System.out.println("draw.."+radius);    }}

结果   draw...0初始化Graph ,先初始化父类,父类构造方法中有一个重载的方法,然后调用子类的draw()方法,打印出的结果为draw..0,因为此时子类radius尚未初始化。Thinking in java 299页编写构造器的准则   用尽可能简单的方法使对象进入正常状态,如果可以的话,避免调用其他的方法。在构造器中唯一能安全调用的方法是基类中的final方法。(也适用于private方法,它们自动属于final方法)
时间: 2024-12-18 19:27:35

java构造器内部多态方法的相关文章

Java构造器内部的多态方法

本文主要详解java构造器内部的多态方法,更多Java技术知识,请登陆疯狂软件教育官网. 我们知道,动态绑定的调用是在运行时才决定的,对象无法知道到底调用的是哪个类的方法. 当我们在构造器中调用动态绑定的方法,就会用到该方法被覆盖之后的定义.但是这种调用的效果难以预计,因为被覆盖的方法在对象被完全构造之前就会被调用.我们先来看看下面这段代码: Java代码 class Base{ private String name = "base"; Base(){ tellName(); pri

Java构造器内部的多态方法的行为

Java构造器调用的层次结构带来了一个有趣的两难问题.如果在一个构造器的内部调用正在构造的对象的某个动态绑定方法,那会发生什么情况? class Glyph{ void draw(){System.out.println("Glyph.draw()");} Glyph() { System.out.print("Glyph() before draw()"); draw(); System.out.println("Glyph() after draw()

Java构造器以及与方法的区别

功能不同: 构造器是为了创建一个类的实例:命名与类相同:可以有任何访问的修饰: public, protected, private或者没有修饰,不能有以下非访问性质的修饰: abstract, final, native, static, 或者 synchronized:无返回值. 方法是为了实现类的一个动作. 以下为复制别人的博客内容: "this"的用法构造器和方法使用关键字this有很大的区别.方法引用this指向正在执行方法的类的实例.静态方法不能使用this关键字,因为静态

Java构造器(构造方法)与方法区别

构造器,又称为构造方法.构造器用于构造该类的实例,也就是对象. 格式如下:[修饰符]  类名 (形参列表){//n条语句} 构造方法是一种特殊的方法,与一般的方法区别:  1.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有. 2.构造方法的调用是在创建一个对象时使用new操作进行的.构造方法的作用是初始化对象. 3.不能被static.final.synchronized.abstract和native修饰.构造方法不能被子类继承. 构造方法可以被重载.没有参数的构

构造器内部的多态方法的行为

每天发出自己学习的内容,坚持坚持... class Glyph{ void draw() { System.out.println("Glyph.draw()"); } Glyph() { System.out.println("Glyph() before draw()"); draw(); System.out.println("Glyph() after draw()"); }}class RoundGlyph extends Glyph{

构造器内部的多态方法的行为详解(附源码)

前言 构造器调用的层次结构带来了一个有趣的两难问题.如果在一个构造器的内部调用正在构造的对象的某个动态绑定方法,那会发生什么情况呢?在一般的方法内部,动态绑定的调用是在运行时才决定的,因为对象无法知道它是属于方法所在的那个类,还是属于那个类的导出类. 如果要调用构造器内部的一个动态绑定方法,就要用到那个方法的被覆盖后的定义.然而,这个调用的效果可能相当难于预料,因为被覆盖的方法在对象被完全构造之前就会被调用.这可能会造成一些难于发现的隐藏错误. 从概念上讲,构造器的工作实际上是创建对象(这并非是

用.native修饰器来对外部组件进行构造器内部方法的调用以及用原生js获取构造器里的方法

html <div id="app"> <span v-text="number"></span> <btn @click.native="add(10,$event)"></btn> <button @click="add(10,$event)">add</button> </div> <button onclick=&qu

Java构造器和方法的区别(转自http://www.blogjava.net/weidagang2046/articles/3430.html)

摘要要学习Java,你必须理解构造器.因为构造器可以提供许多特殊的方法,这个对于初学者经常混淆.但是,构造器和方法又有很多重要的区别.原作者:Robert Nielsen 原站:www.javaworld.com 我们说构造器是一种方法,就象讲澳大利亚的鸭嘴兽是一种哺育动物.(按:老外喜欢打比喻,我也就照着翻译).要理解鸭嘴兽,那么先必须理解它和其他哺育动物的区别.同样地,要理解构造器,那么就要了解构造器和方法的区别.所有学习java的人,尤其是对那些要认证考试的,理解构造器是非常重要的.下面将

Java学习之道:Java构造器和方法的区别

摘要 要学习Java,你必须理解构造器.因为构造器可以提供许多特殊的方法,这个对于初学者经常混淆.但是,构造器和方法又有很多重要的区别. 原作者:Robert Nielsen 原站:www.javaworld.com 我们说构造器是一种方法,就象讲澳大利亚的鸭嘴兽是一种哺育动物.(按:老外喜欢打比喻,我也就照着翻译).要理解鸭嘴兽,那么先必须理解它和其他哺育动物的区别.同样地,要理解构造器,那么就要了解构造器和方法的区别.所有学习java的人,尤其是对那些要认证考试的,理解构造器是非常重要的.下