java 如何理解new_JAVA中new的 理解
T1 a= new T1();
T2 b= new T1(); 区别:
问题1:不是实例化一个a,是实例化一个T1
T1 的一个 对象的引用 a 指向了堆空间里的一个新T1对象 ------------------------------------------
new是java里面的关键字.一般用于创建一个新的对象.
T1 a= new T1();表示创建一个新的T1对象.
T2 b= new T1();这种多用在接口类与实现类之间或子类与父类间
在接口中使用时:T2应该是一个接口类,T1为T2的实现类。
在子类与父类关系时:T2为父类,T1为T2的子类。
这些用法都是Java中多态性的一个表现 ---------------------------------------------------------
JAVA中都是用引用来操作对象,a是引用,new T1()是对象,T1 a = new T1()这段代码,则是将他们连接起来,这样就可以通过a来操作new T1()这个对象;
new这个关键字可以理解为“给我一个新对象”的意思;
那么T1 a = new T1(),可理解为:a说“给我一个新的T1对象”;
T2 b= new T1();可理解为:b说“给我一个新的T1对象”,可b是属于T2类型的引用,不兼容,所以不能连接T1,因此编译时会报错。
所以两者区别是,他们同为T1类型的引用,但却连接不同的对象,因为给他们的都是一个新的对象,并不一样。
T2与T1之间有继承关系吗?? 如果有,则说明T2为T1的父类,就好像花和玫瑰的关系一样,玫瑰属于玫瑰,玫瑰也属于花,所以T2 b= new T1()也可以建立连接,如果调用的方法在T1里有,则是T1里。
第一个问题:
这句话 T1 a 是告诉虚拟机,开辟一个可以存放T1类型的空间a
new T1()就是获得一个T1的对象
连起来就是开辟一个可以存放T1实例的空间a,并且指向一个T1的实例。
一般说就是,新建 一个T1的对象a
第二个问题:
T2 b开辟了一个可以存放T2类型的空间
由于T1是T2的子类,所以T1可以放在T2的空间里
这时候调用T1与T2中共有的方法时,由于方法覆盖,所以执行的是T1中的方法
但是由于b的类型是T2,所以b这个对象不可以使用T1类的专有方法(也就是T1有的方法,但是T2没有这个方法)
如果b希望执行T1中的专有方法
将b转换成T1类型,就可以了
也就是做一个这个操作:(T1)b
JAVA中都是用引用来操作对象,a是引用,new T1()是对象,T1 a = new T1()这段代码,则是将他们连接起来,这样就可以通过a来操作new T1()这个对象;
new这个关键字可以理解为“给我一个新对象”的意思;
那么T1 a = new T1(),可理解为:a说“给我一个新的T1对象”;
T2 b= new T1();可理解为:b说“给我一个新的T1对象”,可b是属于T2类型的引用,不兼容,所以不能连接T1,因此编译时会报错。
所以两者区别是,他们同为T1类型的引用,但却连接不同的对象,因为给他们的都是一个新的对象,并不一样。
T2与T1之间有继承关系吗?? 如果有,则说明T2为T1的父类,就好像花和玫瑰的关系一样,玫瑰属于玫瑰,玫瑰也属于花,所以T2 b= new T1()也可以建立连接,如果调用的方法在T1里有,则是T1里。
java 如何理解new_JAVA中new的 理解相关推荐
- java抽象的理解_Java中抽象类的理解
Java中抽象类的理解 创建 所有 bsp 抽象类 member 初始 dem print ---------------------------------------- ...
- java if在内存中_全面理解Java内存模型
Java 内存模型的抽象 在 java 中,所有实例域.静态域和数组元素存储在堆内存中,堆内存在线程之间共享(本文使用"共享变量"这个术语代指实例域,静态域和数组元素).局部变量( ...
- 【Java基础】Spring 中 Bean 的理解与使用
大白话讲解: 从广义上 Spring 注解可以分为两类: 一类注解是用于注册 Bean 假如 IoC 容器是一间空屋子,首先这间空屋子啥都没有,我们要吃大餐,我们就要从外部搬运食材和餐具进来.这里把某 ...
- java 异常 理解_java中的异常理解
java异常是java提供的用于处理程序中错误的一种机制. 所谓错误是指在程序运行的过程中发生的一些异常事件(如:除0溢出,数组下标越界,所要读取的文件不存在). 设计良好地程序应该在程序异常发生时提 ...
- java代码套路,开发中比较容易理解的代码套路
前言 今天给大家纯手工整理一下本人在开发中认为比较有用的代码思想套路,欢迎大家可以与我一同讨论 链式编程 所谓链式编程即是函数调用后返回对象本身 var calculator = { total:0, ...
- java map的理解_java中的hashmap理解
Asp.net Boilerplate之AbpSession扩展 当前Abp版本1.2,项目类型为MVC5. 以属性的形式扩展AbpSession,并在"记住我"后,下次自动登录也 ...
- instanceof java 报错_java中instanceof怎么理解?java中instanc 爱问知识人
1.用法表达式 result = object instanceof class result:布尔类型. object:必选项.任意对象表达式. class:必选项.任 ...
- python中类怎么理解_Python中的列表理解
python中类怎么理解 In order to create a list, a most obvious and remembered solution is to use a for-loop. ...
- python中的self怎么理解_python中的self理解
前言 先介绍下类和实例 面向对象最重要的概念就是类(class)和实例(instance),类时抽象的模板,比如学生这个抽象的事物,可以用一个student类来表示.而实例时根据类创建出来的一个个具体 ...
最新文章
- AI从入门到放弃2:CNN的导火索,用MLP做图像分类识别?
- c#修改excel文件单元格格式(标记)
- sound.js # pixi辅助插件 — 中文翻译教程
- 申请MVP成功,发贴祝贺!
- cdev_init() / cedev_alloc() / cdev_del()
- HTML---HTML中常用的标签(标题,水平,特殊标签)
- javafx 内存占用_JavaFX:TouchGesture内存泄漏?
- 带哨兵节点的链_HBA公链 | IPFS:区块链“不可能三角”的可能解
- gen阻抗 pcie_COM载板设计之一: PCB的设计
- 第二阶段冲刺10天 第二天
- c语言范式编程之lsearch
- Unity蛮牛教程噩梦射手----代码讲解(1)
- 校招软件测试面经篇二(国企、银行、运营商等)
- 密码经常忘记?三款软件能帮你看到电脑上保存的星号密码
- 重邮python实验课之华氏温度转摄氏温度速查表
- SpringBoot实现异步任务以及定时任务
- oracle中nowait怎么用,oracle中UPDATE nowait 的使用方法介绍
- 硬件防火墙和软件防火墙有什么区别
- 阿里云国际版ECS云服务器欠费会自动释放吗?
- 高阶篇:4.3)FTA故障树分析法-DFMEA的另外一张脸