精华内容
下载资源
问答
  • 为什么可以在类的定义中实例化自己?不会递归到底吗? 答:最近遇到这个问题有点想不明白,翻阅了很久大致明白了。我总结成以下4点: 1.为什么可以在类的定义中实例化自己而不会编译出错? 答:因为在类A加载到JVM上...

    为什么可以在类的定义中实例化自己?不会递归到底吗?

    答:最近遇到这个问题有点想不明白,翻阅了很久大致明白了。我总结成以下4点:

    1.为什么可以在类的定义中实例化自己而不会编译出错?

    答:因为在类A加载到JVM上,声明属于当前包下,所以编译时,属性虽然有类A,但是类A可以找到,所以不会报错。

    参考:https://zhidao.baidu.com/question/363152743.html

    作者:https://zhidao.baidu.com/usercenter?uid=605b4069236f25705e79db00&role=ugc

    2.为什么在方法中可以实例化对象而不会递归出错?

    class A {
        public A funA(){
            A a = new A();//a为局部变量
            return a;
        }
    }
    ...main(...){
        A aa = new A();
        A bb = aa.funA();//相当于利用方法funA造了一个对象
    }
    

    答:方法是等到被调用时才去执行的、才去new对象的。同理这时可以找到类A而不会编译出错,而方法中new完后就返回a,没有其他操作了,里面的对象虽然也有此方法,但没有去调用。如果要递归,那应该是要不断用对象去调用此方法才会递归

    3.为什么属性为类自己的对象时就递归出错了?

    class A {
        A a = new A();//a为属性
    }
    ...main(...){
        A aa = new A();//此时栈溢出
    }
    

    答:此时类A有一个属性是a ,而a是A类的,则属性a作为对象,也有一个属性a,所以当类A实例化后,每个属性a都会包含属性a,这样不断递归下去,直到栈溢出。

    4.为什么属性为类自己的对象时,声明为static就不出错了?

    class A {
        static A a = new A();//a为静态的属性
    }
    ...main(...){
        A aa = new A();//完全可以
    }
    

    答:因为static随着类的加载而加载,之后再造对象是共享之前的static属性的,所以就不会再去new对象了。(类似单例模式的饿汉式)

    展开全文
  • 抽象应该是没有意义的东西,如果它完全存在于自己.以车辆为例.您是否可以不同时描述特定类型的车辆的情况下描述车辆?否 – 因为车辆只是描述一组相关对象的共同特征和行为的一种方式.或者,您可以将它们视为概念....

    抽象类应该是没有意义的东西,如果它完全存在于自己.

    以车辆为例.您是否可以在不同时描述特定类型的车辆的情况下描述车辆?否 – 因为车辆只是描述一组相关对象的共同特征和行为的一种方式.或者,您可以将它们视为概念.

    你的报价:

    Simply, in a good object oriented program, you should never want to instantiate an abstract class or interface. If you do, the design is probably wrong.

    是现货.如果你编写了一个你想要完全实例化的抽象类,那么它就不是一个抽象类.如果你发现自己处于这种情况,你可能需要进行另一层次的抽象,将抽象部分与实际开始将类压缩成具体事物的部分分开.你应该想对抽象类做的唯一事情是扩展它 – 把它变成不那么模糊的东西(如果你愿意,可以更具体).

    当然,Java有时候看起来有些矛盾.实际上,为抽象类编写构造函数是完全有效的:

    abstract class Vehicle {

    // You might have some common variables defined here

    Vehicle() { }

    }

    起初这看起来有点愚蠢.为什么我可以编写一个构造函数,它被设计为允许您实例化一个对象,当我不允许实例化该类时?如果你不写一个,编译器甚至会为你创建一个默认的构造函数!

    答案是允许您实例化一个抽象类 – 您不能直接使用new关键字对其进行实例化.但抽象类最重要的部分是它们被设计为扩展.

    当您实例化抽象类的子类时,您可以显式或隐式调用super();在构造函数内:

    public class Car extends Vehicle {

    public Car() {

    super(); // If you don't put this here, the compiler will!

    }

    }

    当你想到它时,这实际上是有意义的 – 你不能自己拥有一辆车,但我坐在停车场的车绝对是一辆车.在这种情况下,一旦我对车辆,汽车的概念进行了具体扩展,那么我就可以拥有一辆车.

    这使您可以做的最有用的事情是创建泛型集合.因为车辆是所有不同类型车辆的超类,我可以说:

    List vehicles = new ArrayList<>();

    或者,如果您不想/不能使用钻石运算符(<>):

    List vehicles = new ArrayList();

    这允许我将任何类型的Vehicle放入该集合中:

    vehicles.add(new Car());

    vehicles.add(new Van());

    vehicles.add(new Lorry());

    vehicles.add(new Motorcycle());

    // and so on...

    虽然这还有许多其他优点,但在这个答案中无法涵盖.

    展开全文
  • Java抽象真的不能实例化么?学习的过程,发现了一个问题,抽象类在没有实现所有的抽象方法前是不可以通过new来构建该对象的,但是抽象方法却是可以有自己的构造方法的。这样就把我搞糊涂了,既然有构造...

    在Java中抽象类真的不能实例化么?

    在学习的过程中,发现了一个问题,抽象类在没有实现所有的抽象方法前是不可以通过new来构建该对象的,但是抽象方法却是可以有自己的构造方法的。这样就把我搞糊涂了,既然有构造方法,又不可以通过new来创建,那么抽象类在没变成具体类的时候究竟可不可以实例化呢?

    通过上网查找资料、引用:blog.sina.com.cn/s/blog_7ffb8dd5010120oe.html

    抽象类其实是可以实例化的,但是他的实例化方式不是通过new方式来创建对象,而是通过父类的引用来指向子类的实例来间接地实现父类的实例化(因为子类要实例化前,一定会先实例化他的父类。这样创建了继承抽象类的子类的对象,也就把其父类(抽象类)给实例化了).但是:接口是不能被实例化的(接口压根就没有构造函数)。

    代码如下:

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    abstract classB {

    privateString str;

    publicB(String a) {

    System.out.println("父类已经实例化");

    this.str=a;

    System.out.println(str);

    }

    public abstract voidplay();

    }

    public class A extendsB{

    publicA(String a) {

    super(a);

    System.out.println("子类已经实例化");

    }

    @Override

    public voidplay() {

    System.out.println("我实现了父类的方法");

    }

    public static voidmain(String[] args) {

    B aa=new A("a");

    }

    }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    结果如下:

    父类已经实例化 a 子类已经实例化

    另外: Calendar中的getInstance()

    Calendar Cal =  Calendar.getInstance();   Calendar是抽象类不能直接通过new对象,但是提供的静态getInstance()就是给Calendar创建对象。 从Calendar.getInstance() 中所获得的实例其实就是一个 "GreogrianCalendar" 对象

    GreogrianCalendar就是Calendar的子类,他实现了Calendar里面的抽象方法。过父类的引用来指向子类的实例来间接地实现父类的实例化。同时,使用getInstance()有诸多好处: 1。 new 一定要生成一个新对象,分配内存;getInstance()则不一定要再次创建,它可以把一个已存在的引用给你使用,这在效能上优于new;

    2。new创建后只能当次使用,而getInstance()可以跨栈区域使用,或者远程跨区域使用。所以getInstance()通常是创建static静态实例方法的。

    文轉:http://www.cnblogs.com/crt-share/archive/2015/08/29/4769331.html

    展开全文
  • Java抽象真的不能实例化么?学习的过程,发现了一个问题,抽象类在没有实现所有的抽象方法前是不可以通过new来构建该对象的,但是抽象方法却是可以有自己的构造方法的。这样就把我搞糊涂了,既然有构造...

    在Java中抽象类真的不能实例化么?

    在学习的过程中,发现了一个问题,抽象类在没有实现所有的抽象方法前是不可以通过new来构建该对象的,但是抽象方法却是可以有自己的构造方法的。这样就把我搞糊涂了,既然有构造方法,又不可以通过new来创建,那么抽象类在没变成具体类的时候究竟可不可以实例化呢?

    通过上网查找资料、引用:blog.sina.com.cn/s/blog_7ffb8dd5010120oe.html

    抽象类其实是可以实例化的,但是他的实例化方式不是通过new方式来创建对象,而是通过父类的引用来指向子类的实例来间接地实现父类的实例化(因为子类要实例化前,一定会先实例化他的父类。这样创建了继承抽象类的子类的对象,也就把其父类(抽象类)给实例化了).但是:接口是不能被实例化的(接口压根就没有构造函数)。

    代码如下:

    abstract classB {privateString str;publicB(String a) {

    System.out.println("父类已经实例化");this.str=a;

    System.out.println(str);

    }public abstract voidplay();

    }public class A extendsB{publicA(String a) {super(a);

    System.out.println("子类已经实例化");

    }

    @Overridepublic voidplay() {

    System.out.println("我实现了父类的方法");

    }public static voidmain(String[] args) {

    B aa=new A("a");

    }

    }

    结果如下:

    父类已经实例化

    a

    子类已经实例化

    另外:Calendar中的getInstance()

    Calendar Cal

    =  Calendar.getInstance();

    Calendar是抽象类不能直接通过new对象,但是提供的静态getInstance()就是给Calendar创建对象。

    从Calendar.getInstance() 中所获得的实例其实就是一个 "GreogrianCalendar" 对象

    GreogrianCalendar就是Calendar的子类,他实现了Calendar里面的抽象方法。过父类的引用来指向子类的实例来间接地实现父类的实例化。同时,使用getInstance()有诸多好处:

    1。 new

    一定要生成一个新对象,分配内存;getInstance()则不一定要再次创建,它可以把一个已存在的引用给你使用,这在效能上优于new;

    2。new创建后只能当次使用,而getInstance()可以跨栈区域使用,或者远程跨区域使用。所以getInstance()通常是创建static静态实例方法的。

    展开全文
  • 静态和可实例化类中的许多函数都会调用库或实例化对象,以获取与memcache和数据库的连接.它们通常看起来像这样:public function getSomeData() {$key = "SomeMemcacheKey";$cache = get_memcache();$results = $...
  • 问题:1.B类被A类嵌套,那么C类中如何调用B类的成员呢?2.外部类如何对嵌套类进行实例化?带着这2个问题,我举例说明如下,如果您对嵌套类有更深入的理解和心得,别忘了与大家分享./*远外部类访问内部类(嵌套类)为了区分...
  • 1、类的定义和语法View Code2、self关键字self这个关键字相当于实例化对象本身(self相当于d),在实例化过程中,把自己传进去了3、函数__init__() 、__del__()在类中__init__()函数叫构造函数,又叫构造方法,也可以...
  • 前言前几天有一个小伙伴给我留言,提出了2个疑问:是关于这篇文章的:Java,实例化子实例化父类么子实例为什么会有父类的成员变量?它的初始化是通过哪种方式访问了父类对象的表?(我理解这句话的意思是:...
  • 转载:http://blog.csdn.net/zhanzhan0329/article/details/9173419首先明确地说:抽象不能被实例化。我对抽象能否被实例化产生疑问始于我...(百度百科说:实例化其实就是内存开放一个空间用于存储新的产...
  • Java抽象真的不能实例化么?学习的过程,发现了一个问题,抽象类在没有实现所有的抽象方法前是不可以通过new来构建该对象的,但是抽象方法却是可以有自己的构造方法的。这样就把我搞糊涂了,既然有构造...
  • 看到你几个网站都问了这个问题。不知道你要用什么业务场景下。...2. 不能从嵌套的对象访问非静态的外围对象。如下所示代码为定义一个静态嵌套public class StaticTest{private static String...
  • 抽象实例化

    2017-03-05 13:10:00
    Java抽象真的不能实例化么?  学习的过程,发现了一个问题,抽象类在没有实现所有的抽象方法前是不可以通过new来构建该对象的,但是抽象方法却是可以有自己的构造方法的。这样就把我搞糊涂了,既然有...
  • Java抽象真的不能实例化么?  学习的过程,发现了一个问题,抽象类在没有实现所有的抽象方法前是不可以通过new来构建该对象的,但是抽象方法却是可以有自己的构造方法的。这样就把我搞糊涂了,既然有...
  • Java抽象真的不能实例化么?学习的过程,发现了一个问题,抽象类在没有实现所有的抽象方法前是不可以通过new来构建该对象的,但是抽象方法却是可以有自己的构造方法的。这样就把我搞糊涂了,既然有构造...
  • Java抽象真的不能实例化么?  学习的过程,发现了一个问题,抽象类在没有实现所有的抽象方法前是不可以通过new来构建该对象的,但是抽象方法却是可以有自己的构造方法的。这样就把我搞糊涂了,既然有...
  • 的初始化与实例化

    2019-05-14 16:18:22
    最近一直看关于初始化与实例化的知识,对加载机制理解很混乱,网上也是各种例子,但是还是没有搞懂两者区别,我自己测试了一下,记录一下测试结果。 的初始化 这里引用网上的通用解答: 从被加载到虚拟机...
  • 面向对象语言, 对象是程序运行时实际存在的数据, 而不是. 我们要先把类实例化,初始化然后才能使用对象. 实例化:就是告诉运行时按照的定义为对象分配内存, 返回内存指针;  对象的内存大小=父类的内存大小+...
  • 是否有任何加载Jar的例子,从Jar实例化一个?关于我想要完成什么的更多细节.我有一个基本上连续运行的Java命令行应用程序.我希望它能够运行时动态引用JAR文件,并运行时实例引用这些jar.这些罐子可能...
  • 子类的实例化过程:子类所有的构造函数默认都会访问父类的空参数的构造函数。 为什么子类实例化的时候要访问父类的构造函数呢? 那是因为子类继承了父类,获取到了父类内容(属性),所以使用父类内容...
  • 基础概念中类,对象,实例,实例化,引用类型之间的关系。 开学两三周了,第一次接触面向对象的开发语言,很多基础概念都懵懵懂懂的,静下心来翻阅了相关资料,终于从中窥探出了一丝精华,现记录下来,即见证自己的...
  • 多线程的项目,我也遇到了这个问题,而且我mapper接口以上的实例化是我自己通过java反射实例化的,我只有Mapper接口的时候才加了@Mapper注解,导致的直接问题是,如果我如果业务...
  • 关于app_code目录中类实例化

    千次阅读 2009-03-13 11:28:00
    1、app_code里面建立自己的子文件夹2、Common里面Log定义命名空间3、UserManage目录下LoginLogList页面引入命名空间4、生成Log实例
  • 如题,我自己创建了一个HelloServlet 继承自Servlet,当有请求来的时候,这个HelloServlet会被实例化, 以下问题,诚挚的向各位大佬提问,大佬也可以挑选其中某部分作答,感激不尽 问题: ①既然被实例...
  •  控制器定义一个方法来实例化模型,使用的是普通方式实例化:创建部门控制器文件: 实例化代码: 实例化结果: 5.2、快速实例化方法上述的普通实例化方法虽然可以进行实例化操作,但是使用上比较麻烦,还...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,343
精华内容 2,137
关键字:

在类中实例化自己