精华内容
下载资源
问答
  • java中匿名内部类构造方法调用

    千次阅读 2013-11-28 21:48:51
    java中匿名内部类构造方法调用
    展开全文
  • 综合网上的相关帖子和我自己的调试,研究了一下关于JAVA继承的静态变量、成员变量、父子类构造方法调用顺序问题。首先看一段程序:class X { Y b = new Y();// 7、这里是父类成员变量初始化 static Y sb = new Y...

    综合网上的相关帖子和我自己的调试,研究了一下关于JAVA继承类的静态变量、成员变量、父子类构造方法调用顺序问题。首先看一段程序:

    class X {
     Y b = new Y();// 7、这里是父类成员变量初始化

     static Y sb = new Y();// 1行、父类静态变量,输出static Y(静态代码块先初始化),2行:Y

     static {
      System.out.println("static X父类静态代码块");// 3行、执行静态代码块
      new Y();// 4行、这里只是输出Y,有static Y(静态代码块只执行一次)
     }
     
     X() {
      System.out.println("X");// 8、父类成员变量初始化之后,执行父类构造器输出X
     }
    }

    class Y {
     static {
      System.out.println("static Y");
     }

     Y() {// 执行构造函数
      // 这里有个super()==Object()
      System.out.println("Y");
     }
    }

    public class Zextends X { //从这里开始继承会调用父类的static和static成员变量:2:
     final static int mead=45;
        final byte b=16;
        static Y sb= new Y();//5行、子类的静态变量,输出Y
        static{      
            System.out.println("static Z");//6行、子类的静态代码块
        }
        Y y = new Y();//9、这里是子类成员变量初始化

        Z() {
            //这里有super()==new X()
            this.y = null;
            System.out.println("Z");//10、子类成员变量初始化之后,执行子类构造器输出Z
        }

     

     public static void main(String[] args) {
      new Z();
     }
    }

    /*总结:1:继承类时会调用父类的Static的成员变量和Static代码块、顺序是按照2个Static代码的先后顺序执行
     * 2:继承情况下,首先是从顶层父类的静态变量和代码块开始执行,依次向下。同一个类中,执行的顺序是依照静态变量和静态代码在类中的编码顺序执行,
     * 变量和代码块无任何优先级之分。全部继承树中的类静态变量和代码块都初始化完毕后,开始从顶层父类执行非静态的类变量和类代码块初始化,执行顺序同静态,
     * 然后紧接着是执行构造函数,完毕后才向下,执行子类的类变量、代码块和构造函数。 非静态内部类中不能定义类静态代码块和非final的类静态变量;静态内部类,
     * 可以声明非final的静态变量和静态代码块。
     */

       

      本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/pisota/archive/2010/02/27/5332848.aspx

      展开全文
    1. public class Test{ private int x; private String s; public Test(int x) { this.x = x;...//调用自身的构造方法,这种写法只能存在于构造方法中,有且只能有一个,在此构造方法中必须写在其他语句之前
      public class Test{
          private int x;
          private String s;
          public Test(int x) {
              this.x = x;
          }
          public Test(int x, String s) {
      //调用自身的构造方法,这种写法只能存在于构造方法中,有且只能有一个,在此构造方法中必须写在其他语句之前
              this(x);
              this.s = s;
          }
      }

      1.上面注释的是我觉得大家最容易忘记的this功能

      2.this就是指向当前对象了,这个容易理解和掌握

      3.匿名类或内部类中要调用外部类方法,要使用:外部类名.this.方法名

      4.类中可以在将自身对象作为参数时使用this。



      this与static势不两立,因为static跟具体对象没关系,this就是具体对象的引用。

      一个构造方法中要调用另外一个构造方法,不能通过名字来调用,必须通过this(XXX)来调用。

      展开全文
    2. RT,我在写代码时碰到一个以下问题: 1.A 的无参构造方法调用 有参构造y

      RT,我在写代码时碰到一个以下问题:

      1.类A 的无参构造方法中 调用 有参(参数类型为B)构造方法,出现了以下问题.

      2.1.若B为A的内部类,则编译出错

      2.2.若B为普通类,则无问题.

      代码如下:


      内部类:

      public class A1 {
      	B1 b;
      
      	public A1() {
      		this(new B1());//此处编译出错
      	}
      
      	public A1(B1 b) {
      		this.b = b;
      	}
      
      	public class B1 {
      	}
      }

      普通类:

      public class A2 {
      	B2 b;
      
      	public A2() {
      		this(new B2());//此处没有问题
      	}
      
      	public A2(B2 d) {
      		this.b = d;
      	}
      }
      
      class B2 {
      }


      有什么解决办法吗?

      1. 把内部类B改成 static

      2.因为一些原因,内部类B不能是static,有什么别的解决办法吗?


      补充:


      内部类这么写也没问题:

      public class A1 {
      	B1 b;
      
      	public A1() {
      		b=new B1();//这么写没问题.
      //		this(new B1());
      	}
      
      	public A1(B1 b) {
      		this.b = b;
      	}
      
      	public class B1 {
      	}
      }
      

      参数资料:

      http://blog.csdn.net/shuixin536/article/details/8989776

      http://stackoverflow.com/questions/2741066/why-does-a-sub-class-class-of-a-class-have-to-be-static-in-order-to-initialize-t

      展开全文
    3. JAVA匿名内部类构造方法

      千次阅读 2013-10-08 16:10:44
      与人讨论匿名内部类构造方法问题,自己写代码看看原理到底是什么样子的。因为是匿名的,所以就无从创建一个同名的构造方法了。但是可以直接调用父类的构造方法。测试代码如下:   Java代码   ...
    4. 内部类如何调用外部方法

      千次阅读 2019-09-28 17:18:45
      内部类如何调用外部方法 直接上代码 public class test{ public static void main(String[] args) { Outer.Inner p=new Outer().new Inner(); p.show(); } } class Outer{ int sum; class Inner{ ...
    5. 匿名内部类如何同时调用多个方法

      千次阅读 2015-12-17 17:25:25
      匿名内部类如何同时调用多个方法前几天看Java学习视频的时候,讲到匿名内部类说只可以一次调用一种方法;要调用另一种方法,只能重新再建一个匿名内部类,这样是十分浪费内存的。那么我就在想,可不可以使用匿名内部...
    6. java中子类调用父类的构造方法

      千次阅读 2014-11-21 18:40:08
      在Java中,子类的构造过程中,必须调用其父的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的?  答案如下:  ...构造方法是new一个对象的时候,必须要调的方
    7. js系列教程4-函数、函数参数教程全解js中的4种函数调用模式javascript一共有4种调用模式:函数调用模式、方法调用模式、构造器调用模式和间接调用模式。【1】函数调用模式 当一个函数并非一个对象的属性时,那么它...
    8. 一 Python中内部类 class MyOuter: age=18 def __init__(self,name): self.name=name class MyInner: def __init__(self,inner_name): self.inner_name=inner_name out=MyOute...
    9. Java里子类调用父类构造方法问题

      千次阅读 2013-03-09 12:19:00
      在Java中,子类的构造过程中,必须调用其父的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的?   答案如下:  ...构造方法是new一个对象的时候,必...
    10. C++中构造函数调用顺序

      千次阅读 2015-09-23 17:02:28
      当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生构造函数,依次推,直至到达派生次数最多的派生次数最多的构造函数为止。简而言之,对象是由“底层向上”开始构造的。因为,构造函数一...
    11.  的封装性不光体现在对属性的封装上,实际上方法也是可以被封装的,当然,在方法封装上也包含了对构造方法的封装。例如如下代码就是对构造方法封装。 class Singleton{ private Singleton(){ // 将构造方法...
    12. Java构造方法的相互调用

      万次阅读 多人点赞 2017-04-19 10:20:34
      构造方法
    13. 继承有个特点,就是子类无法访问父类的private字段或者private方法。例如,Student就无法访问Person的name和age字段: class Person { private String name; private int age; } class Student extends ...
    14. 在eclipse中,当修改一个的方法名称时,如何让其调用这个的方法名称同时被修改为当前...在弹出的窗口中输入新的名称,确定后eclipse会自动把该类内部构造方法改名,会把工程中调用到该的那些自动修改正确。
    15. Java子类调用父类构造方法

      万次阅读 多人点赞 2017-09-29 14:49:15
      在Java中,子类的构造过程中,必须调用其父的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的?   答案如下:   当你new一个子类对象的...构造方法是new一个对象的时候
    16. 转载请注明出处:http://blog.csdn.net/xyang81/article/details/44002089在第6章我们学习到了在Native层如何调用Java静态方法和实例方法,其中调用实例方法的示例代码中也提到了调用构造函数来实始化一个对象,但...
    17. 内部类: 定义在A中的B就是内部类,B在A中的地位和其他成员相同,意思就是说可以相互调用  优点:通过内部类可以...外部对象.new 内部类构造方法 Outer.Inner in = out.new Inner(); in.play(); 方...
    18. Java内部类和匿名内部类的用法

      万次阅读 多人点赞 2016-07-21 15:46:41
      Java内部类和匿名内部类的用法 【尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/51981163一、内部类: (1)内部类的同名方法 内部类可以调用外部方法,如果内部类有同名方法...
    19. public class Test { public static void main(String[] args) { //第一种方式: Outter outter = new Outter(); Outter.Inner inner = outter.new ... // 内部类构造函数 public Inner() { } } }
    20. //调用了本的一个参数的构造方法 //this(); //调用了本无参的 构造方法。 this.id = id; // this.id = id 局部变量的id给成员变量的id赋值 System.out.println("两个参数的构造方法调用了..."); } ...
    21. 1、概述 Xposed是非常牛叉的一款hook框架,...2、如何Hook构造方法 3、如何Hook复杂参数的方法 4、如何替换函数执行内容 5、如何Hook内部类中的函数 6、如何Hook匿名的函数 7、如何获取调用对象去调用函数,或者...
    22. 在js的中,可分为三种方法,constructor构造方法、静态方法与普通方法。 一、constructor构造方法 1.概念 的作用在于构建对象,而constructor构造方法就是用于构建对象实例。 2.使用方法 在使用new...
    23. 子类调用父类构造方法问题

      千次阅读 2010-01-26 10:07:00
      在Java中,子类的构造过程中,必须调用其父的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的? 答案如下: 当你new一个子类对象的...构造方法是new一个对象的时候,必须要调的
    24. 文章目录1 内部类的基本概念1.1 内部类的定义1.2 内部类的优缺点2 创建内部类2.1 在外部外部创建非静态内部类2.2 在外部外部创建静态内部类...3.2 静态内部类3.3 方法内部类3.4 匿名内部类4 内部类与外部的关系...
    25. 但是如果看输出结果,我们会发现当Glyph的构造方法调用draw()方法时,radius不是默认初始值1,而是0。  揭秘:初始化的实际过程:  1)在其他任何事物发生之前,将分配给对象的存储空间初始化成二进制的零...
    26. 类方法:1.... 3.JAVA语言中,中的类方法,在该加载到内存时,就分配了相应的入口地址,所以类方法不但可以被任何对象调用执行,也可以直接通过类名调用,入口地址直到程序退出的时候才会被取消。
    27. Python构造方法

      千次阅读 2019-12-17 15:50:56
      描述:是函数的一个变种,在Python中,有函数式编程和面向对象编程,java和C#之只能把函数写到里,没有函数式编程,所以只有面向对象,所以在Python中有了选择,可能就变得有点麻烦,但是在Python里,函数式编程是可以...
    28. 多态中调用子类特有方法的两种方式 在日常撸代码的过程当中,总结了多态中调用子类特有方法的2种方式,现整理如下,如有错误,欢迎批评指正,不多说,先上代码! public class Animal{ //父类 public void...

    空空如也

    空空如也

    1 2 3 4 5 ... 20
    收藏数 620,768
    精华内容 248,307
    关键字:

    内部类的构造方法如何调用