首先,要说一下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(垃圾回收机制)负责回收,来释放空间。
以上就是昨天课堂的总结。。。哈
分享到:
相关推荐
5. **构造函数与析构函数**:构造函数是类的一个特殊方法,用于初始化新创建的对象。析构函数则在对象生命周期结束时自动调用,用于清理资源。这两个函数在类的设计中扮演重要角色。 6. **友元**:友元函数或友元类...
非静态初始化块(或实例初始化块)在创建对象时执行,作为构造器的补充,用于在对象实例化过程中执行特定的初始化操作。这些初始化块在编译后会被插入到构造器的代码中,且位于所有构造器代码的前面,确保在任何构造...
5. 构造器与析构器:构造器(constructor)用于初始化新创建的对象,通常与类名相同,无返回类型。Java没有析构器,但可以使用`finalize()`方法进行资源清理,不过不推荐依赖此方法,因为垃圾回收机制并不保证何时...
5. **深入理解类与对象**:这部分进一步讨论了类的构造函数、析构函数、接口、抽象类和继承等高级概念,帮助读者理解如何构建复杂的类层次结构,以及如何通过继承和多态来实现代码复用和扩展性。 此外,教程还涵盖...
3. 在创建实例时,先执行所有父类和子类的实例初始化块(也称为构造器前的初始化代码),按照它们在代码中出现的顺序。 4. 接下来,从父类到子类依次调用构造函数。 5. 最后,实例变量按照声明的顺序进行初始化。 ...
此外,Java中的构造器用于初始化类的对象,无参构造器是每个类都默认拥有的。 类和对象是Java的核心。类是对象的蓝图,描述了对象的行为和属性。对象是类的实例,具备类所定义的特征和功能。通过关键字`new`可以...
另一个案例可能是设计一个银行账户类,涵盖类的构造器、属性和方法,以及对象的创建和交互,这将展示面向对象编程的基本思想。还可能有涉及数组和集合框架的案例,帮助理解数据存储和处理的不同方式。 除了代码实现...
在这个实验中,我们探讨了如何使用Java编程语言来创建和使用抽象类以及继承的概念。抽象类Shape被设计为一个基础类,它定义了两个抽象方法:`getArea()` 和 `getPerimeter()`,用于计算形状的面积和周长。抽象方法在...
书中会详细讨论类的定义、对象的创建、构造函数与析构函数、访问控制(public、private、protected)以及封装性。 4. **继承与多态**:继承允许我们创建新的类,这些类基于现有类并扩展其功能。多态是通过虚函数...
因此我们欢迎广大读者的批评与指正,无论从书中采用的实例、参考,还是我们遗漏的已知应用,或应该包含的设计模式等方面。你可以通过Addison-Wesley写信给我们,或发送电子邮件到:design-patterns@cs.uiuc.edu。你...
第三章主要讲解了类变量、实例变量、构造方法以及静态块等基础知识。首先,类变量(static修饰的变量)如`staticVar`和`sum`在类装载时进行初始化,无论创建多少个对象,它们都共享同一份内存空间。实例变量(非...
`enum` 关键字可以自动实现枚举类的继承关系和构造器定义。 枚举类的特点 枚举类有以下特点: * 枚举类的对象是有限的和固定的。 * 枚举类的构造器只能使用 `private` 访问控制符。 * 枚举类的所有实例必须在枚举...
10. 标准模板库(STL):C++的STL包含容器(如vector, list, map等)、迭代器、算法和函数对象,为程序员提供了强大的数据结构和算法支持。 11. 内存管理:理解动态内存分配(new和delete操作符)和智能指针(如...
课程内容覆盖了C++的基础到高级主题,包括但不限于类与对象、封装、继承、多态等关键概念,旨在帮助学习者掌握面向对象设计原则和编程技巧。 在提供的压缩包文件中,我们可以看到一系列以“第X章”命名的PPT文件,...
4. 抽象类可以包含构造器,而接口不能。 5. 抽象类可以用于表示“is-a”关系,接口更常用于表示“has-a”或“can-do”关系。 在实际编程中,选择使用抽象类还是接口取决于设计需求。如果需要提供一部分实现,并且...
- Student 类的构造器接受三个参数,用于初始化所有字段。 - Student 类重写了 `toString()` 方法,返回包含 name、age 和 school 字段的字符串。 3. Test 类的使用 - 在 Test 类的 `main` 方法中,创建了 ...
子类在没有显式调用父类构造器的情况下,默认会调用父类的无参构造器。 异常处理是Java程序中的重要部分。`Throwable`是所有异常的基类,分为`Error`和`Exception`。运行时异常(如`ArithmeticException`)不需要...
试卷可能会涵盖函数、运算符重载、构造函数与析构函数、模板、异常处理、STL(标准模板库)等主题。STL是一组预先编写好的高效容器(如vector, list, set)、迭代器、算法和函数对象,它极大地提高了C++程序员的生产...
在实际编程中,我们还需要了解C#中的构造函数(用于初始化对象)、析构函数(用于清理资源)、访问器(getter和setter)以及属性(property,封装字段的访问)。此外,理解接口实现、抽象方法、虚方法、覆盖方法...