`
希绪弗斯
  • 浏览: 16577 次
社区版块
存档分类
最新评论

类与对象的补充(构造器等)

 
阅读更多

  首先,要说一下this关键字,这是前半节课,我记忆最深的一个单词。当我们在初始化name的属性值时,我们可以这样写:

  public class student(String name){

       name=na;

}

  那可不可以这样写?name=name;都知道不可以,原因就是当属性值和参数相同时,优先使用参数。

  其实,这个this和它本身在英语中的作用是一样的,就是指代作用。比如说:

   //创建一个学生对象:一个参数的构造器

      String name="NetJava";

      Student st2=new Student(name);

   //构造时,传入名字参数,初始化name属性值

      public Student(String name){

          this.name=name;

}

那么这里的this就指的是st2所代表的对象。

   那么,在说this的时候,又说到了构造器。其实,我觉得这些东西刚听到这些奇怪的名字时就会郁闷,到底是什么意思啊,真心觉得好麻烦。但事实上,把它说成构造方法就会明白很多,那构造方法,构造什么啊,这到底是什么方法。第一,构造方法可以给属性设置初始化值,格式就是刚才那几行代码,直接用public+类名(数据类型 参数,,,);第二,可以实例化对象,我们的实例化

类名 对象名=new 类名();这后面的类名 ()其实就是一个构造方法,那我们可以在这个括号里加参数,几个参数就是几个参数的构造器。

   Java会给每一个类都提供一个默认无参数的构造方法。那我们想自己重新定义一个构造方法,这就叫做方法的重载。要求就是方法名必须完全相同,其次方法所带的参数个数、参数类型和参数顺序,这三个中必须要有一个不同。至于调用,就要根据参数的不同来区分调用。

   最后一项,值传递和引用传递。

   值传递是要求数据类型的:也就是java中的8中基本数据类型还有String。

   基本要求说完了,那值传递究竟是什么,从字面理解,就是传递值。比如说,我在测试类里赋予i=10,在study方法中加上i这个参数,那么在Student类里输出值的时候,就会把i当成初值,在这个基础上的值。也就是说,值传递过去了。

   引用传递当然适用于引用数据类型。

   引用传递一开始我觉得和C语言中的赋值没有区别,但关键问题在后面。引用传递其实是地址传递,什么意思,比如说我们每个人的名字可以代表我们每个人,可以将我们进行区分,也就是说当我们叫谁谁谁的名字时,并不是名字就是我们本身这个实体,而是这个名字指向我们,就像是地址一样,那么引用传递就是传递的这个东西。就是比如说stu1指向的是栈内存的第一个空间,stu2指向的是栈内存的第二个空间,那么stu2=stu1;这行代码的意思就是让stu2也指向了栈内存的第一个空间,也就是说不管中间再加几个变量,比如说stu2=stu1;stu3=stu2;stu1=stu3;最后都会指向第一个栈内存空间,最后都会相等。

   那么空出来的那些空间怎么办,GC(垃圾回收机制)负责回收,来释放空间。

   以上就是昨天课堂的总结。。。哈

分享到:
评论

相关推荐

    C++面向对象程序设计习题解析与上机指导

    5. **构造函数与析构函数**:构造函数是类的一个特殊方法,用于初始化新创建的对象。析构函数则在对象生命周期结束时自动调用,用于清理资源。这两个函数在类的设计中扮演重要角色。 6. **友元**:友元函数或友元类...

    Java面向对象2.docx

    非静态初始化块(或实例初始化块)在创建对象时执行,作为构造器的补充,用于在对象实例化过程中执行特定的初始化操作。这些初始化块在编译后会被插入到构造器的代码中,且位于所有构造器代码的前面,确保在任何构造...

    北大青鸟ACCP6.0 第二学期 S2 JAVA oop面向对象

    5. 构造器与析构器:构造器(constructor)用于初始化新创建的对象,通常与类名相同,无返回类型。Java没有析构器,但可以使用`finalize()`方法进行资源清理,不过不推荐依赖此方法,因为垃圾回收机制并不保证何时...

    C#程序设计语言与面向对象基础精简教程.pdf

    5. **深入理解类与对象**:这部分进一步讨论了类的构造函数、析构函数、接口、抽象类和继承等高级概念,帮助读者理解如何构建复杂的类层次结构,以及如何通过继承和多态来实现代码复用和扩展性。 此外,教程还涵盖...

    4第四章 抽象、封装与类-补充.ppt

    3. 在创建实例时,先执行所有父类和子类的实例初始化块(也称为构造器前的初始化代码),按照它们在代码中出现的顺序。 4. 接下来,从父类到子类依次调用构造函数。 5. 最后,实例变量按照声明的顺序进行初始化。 ...

    Java知识点补充

    此外,Java中的构造器用于初始化类的对象,无参构造器是每个类都默认拥有的。 类和对象是Java的核心。类是对象的蓝图,描述了对象的行为和属性。对象是类的实例,具备类所定义的特征和功能。通过关键字`new`可以...

    Java基础补充案例.zip

    另一个案例可能是设计一个银行账户类,涵盖类的构造器、属性和方法,以及对象的创建和交互,这将展示面向对象编程的基本思想。还可能有涉及数组和集合框架的案例,帮助理解数据存储和处理的不同方式。 除了代码实现...

    编写一个抽象类Shape

    在这个实验中,我们探讨了如何使用Java编程语言来创建和使用抽象类以及继承的概念。抽象类Shape被设计为一个基础类,它定义了两个抽象方法:`getArea()` 和 `getPerimeter()`,用于计算形状的面积和周长。抽象方法在...

    C++面向对象程序设计(第6版)

    书中会详细讨论类的定义、对象的创建、构造函数与析构函数、访问控制(public、private、protected)以及封装性。 4. **继承与多态**:继承允许我们创建新的类,这些类基于现有类并扩展其功能。多态是通过虚函数...

    设计模式:可复用面向对象软件的基础--详细书签版

    因此我们欢迎广大读者的批评与指正,无论从书中采用的实例、参考,还是我们遗漏的已知应用,或应该包含的设计模式等方面。你可以通过Addison-Wesley写信给我们,或发送电子邮件到:design-patterns@cs.uiuc.edu。你...

    java语言程序设计(一)第三章补充.docx

    第三章主要讲解了类变量、实例变量、构造方法以及静态块等基础知识。首先,类变量(static修饰的变量)如`staticVar`和`sum`在类装载时进行初始化,无论创建多少个对象,它们都共享同一份内存空间。实例变量(非...

    大学课程讲义-Java基础-枚举&注解.pptx

    `enum` 关键字可以自动实现枚举类的继承关系和构造器定义。 枚举类的特点 枚举类有以下特点: * 枚举类的对象是有限的和固定的。 * 枚举类的构造器只能使用 `private` 访问控制符。 * 枚举类的所有实例必须在枚举...

    C++面向对象程序设计

    10. 标准模板库(STL):C++的STL包含容器(如vector, list, map等)、迭代器、算法和函数对象,为程序员提供了强大的数据结构和算法支持。 11. 内存管理:理解动态内存分配(new和delete操作符)和智能指针(如...

    C++面向对象程序设计[姚全珠][电子教案].rar

    课程内容覆盖了C++的基础到高级主题,包括但不限于类与对象、封装、继承、多态等关键概念,旨在帮助学习者掌握面向对象设计原则和编程技巧。 在提供的压缩包文件中,我们可以看到一系列以“第X章”命名的PPT文件,...

    第六章 抽象类与接口.zip

    4. 抽象类可以包含构造器,而接口不能。 5. 抽象类可以用于表示“is-a”关系,接口更常用于表示“has-a”或“can-do”关系。 在实际编程中,选择使用抽象类还是接口取决于设计需求。如果需要提供一部分实现,并且...

    大学java期末考试试题和答案.doc

    - Student 类的构造器接受三个参数,用于初始化所有字段。 - Student 类重写了 `toString()` 方法,返回包含 name、age 和 school 字段的字符串。 3. Test 类的使用 - 在 Test 类的 `main` 方法中,创建了 ...

    java刷题补充1

    子类在没有显式调用父类构造器的情况下,默认会调用父类的无参构造器。 异常处理是Java程序中的重要部分。`Throwable`是所有异常的基类,分为`Error`和`Exception`。运行时异常(如`ArithmeticException`)不需要...

    C++面向对象程序设计(甲) 试卷A.zip

    试卷可能会涵盖函数、运算符重载、构造函数与析构函数、模板、异常处理、STL(标准模板库)等主题。STL是一组预先编写好的高效容器(如vector, list, set)、迭代器、算法和函数对象,它极大地提高了C++程序员的生产...

    C#面向对象

    在实际编程中,我们还需要了解C#中的构造函数(用于初始化对象)、析构函数(用于清理资源)、访问器(getter和setter)以及属性(property,封装字段的访问)。此外,理解接口实现、抽象方法、虚方法、覆盖方法...

Global site tag (gtag.js) - Google Analytics