1如何声明一个类?如何创建类的对象?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1如何声明一个类?如何创建类的对象?相关的知识,希望对你有一定的参考价值。
要标准详细答案!
谢谢!
在前面的例子中,用下面的语句来声明一个Box类型的对象:
Box mybox = new Box();
本例将上面讲到的两步组合到了一起,可以将该语句改写为下面的形式,以便将每一步讲的更清楚:
Box mybox; // declare reference to object(声明一个类)
mybox = new Box(); // allocate a Box object (声明一个对象)
第一行声明了mybox ,把它作为对于Box类型的对象的引用。当本句执行后,mybox 包含的值为null ,表示它没有引用对象。这时任何引用mybox 的尝试都将导致一个编译错误。第二行创建了一个实际的对象,并把对于它的引用赋给mybox 。现在,你可以把mybox 作为Box的对象来使用。但实际上,mybox 仅仅保存实际的Box 对象的内存地址。这两行语句的效果如图6-1 所示。
图6-1 声明Box 类型的对象
注意:那些熟悉C/C++ 语言的读者,可能已经注意到了对象的引用看起来和指针类似。这种怀疑实质上是正确的。一个对象引用和内存指针类似。主要的差别(也就是Java安全的关键)是你不能像实际的指针那样来操作它。这样,对于对象引用,你就不能像指针那样任意分配内存地址,或像整数一样操作它。
6.2.1 深入研究new 运算符
刚才已经解释过,new运算符动态地为一个对象分配地址。它的通用格式如下:
class-var = new classname( );
其中,class-var 是所创建类类型的变量。classname 是被实例化的类的名字。类的后面跟的圆括号指定了类的构造函数。构造函数定义当创建一个类的对象时将发生什么。构造函数是所有类的重要组成部分,并有许多重要的属性。大多数类在他们自己的内部显式地定义构造函数。如果一个类没有显式的定义它自己的构造函数,那么Java 将自动地提供一个默认的构造函数。对类Box 的定义就是这种情况。现在,我们将使用默认的构造函数。不久,你将看到如何定义自己的构造函数。
这时,你可能想知道为什么对整数或字符这样的简单变量不使用new 运算符。答案是Java 的简单类型不是作为对象实现的。出于效率的考虑,它们是作为“常规”变量实现的。你将看到,对象有许多特性和属性,使Java 对对象的处理不同于简单类型。由于对处理对象和处理简单类型的开销不同,Java 能更高效地实现简单类型。后面,你将看见,对于那些需要完全对象类型的情况下,简单类型的对象版本也是可用的。
理解new运算符是在运行期间为对象分配内存的是很重要的。这样做的好处是你的程序在运行期间可以创建它所需要的内存。但是,内存是有限的,因此new有可能由于内存不足而无法给一个对象分配内存。如果出现这种情况,就会发生运行时异常(你将在第10 章学习如何处理这种异常以及其他异常情况)。对于本书中的示例程序,你不必担心内存不足的情况,但是在实际的编程中你必须考虑这种可能性。
让我们再次复习类和对象之间的区别。类创建一种新的数据类型,该种类型能被用来创建对象。也就是,类创建了一个逻辑的框架,该框架定义了它的成员之间的关系。当你声明类的对象时,你正在创造该类的实例。因此,类是一个逻辑构造,对象有物理的真实性(也就是对象占用内存空间)。弄清楚这个区别是很重要的。 参考技术A /**
* 创建类
* @author admin
*
*/
public class CreatClass
public CreatClass()
/**
* 创建类的对象
* @author admin
*
*/
public class Test1
public static void main(String[] args) throws Exception
CreatClass c=new CreatClass();
参考技术B public class TestClass//创建类
public TestClass()
System.out.println("创建类");//构造函数
public class Test
public static void main(String[] args)
TestClass tc=new TestClass();//创建类对象
本回答被提问者采纳
Laravel 如何创建任何类的对象
【中文标题】Laravel 如何创建任何类的对象【英文标题】:How Laravel creates object of any class 【发布时间】:2021-11-30 23:35:33 【问题描述】:我是 laravel 框架的新手,我不清楚 laravel 对象的创建。 laravel 如何创建类对象?
喜欢例如。我有一个名为 class MyTestController 的控制器,它定义了名为 MyMethod()
的方法这是这个控制器的路由, Route::get('Test',[MyTestController::class,'MyMethod']);
当我点击 -- http://localhost:81/laravel_project/Test,
MyMethod() 被调用。 我还没有使用 new 关键字创建 MyTestController 类对象,那么它的方法是如何调用的?
框架是否在幕后创建对象。
【问题讨论】:
欢迎来到 SO。简短的回答是 php.net/call_user_func 。也许 laravel 正在使用另一种方式,例如反射之类的。 它使用自己的dependency injection mechanism 【参考方案1】:换句话说,是的,Laravel 在幕后创建对象,但是根据我的经验,不建议/很少在 Laravel 框架中创建声明的对象(例如控制器、模型等),因为那是框架的作用,它们使您更简单。以模型为例,通过在模型名称后添加where($id)->first()
代码(最终代码为Model::where($id)->first()
),Laravel 将在调用first()
方法时根据查询结果为您创建模型对象。有很多方法与first()
具有相同的行为,get()
也是其中之一,不同之处在于first()
只会给你一个对象,而get()
会给你一个包含结果,即使它只匹配 1。
在你的情况下,即控制器,基本上 hassan 和 apokryfos 已经为你解答了。
【讨论】:
【参考方案2】:试试这个
Route::get('Test', function()
$object = new MyTestController();
var_dump($object);
);
【讨论】:
以上是关于1如何声明一个类?如何创建类的对象?的主要内容,如果未能解决你的问题,请参考以下文章