今日内容
零、 复习昨日
一、this关键字
二、构造方法
三、重载
零、 复习昨日
1 类和对象是什么关系?
- 类是模板,对象是实例
- 对象是由类创建的
2 类中有什么?(类的成员)
- 成员属性(成员变量)
- 成员方法
3 创建对象的语法?
- 类名 对象名 = new 类名();
4 调用对象属性的语法
- 对象.属性
5 调用对象方法的语法
- 对象.方法名()
6 画创建一个对象的内存图
7 成员变量和局部变量的区别
- 位置
- 使用范围
- 初始化
- 内存位置
总结: 成员变量属于对象,局部变量属于方法
一、this关键字
this 是jdk提供的用来指代调用当前方法的对象的关键词,简化记忆: this就是当前类对象
作用:
- this是对象,就可以调用属性和方法
总结最常用用法:
- 当成员变量和局部变量重名时,用来特指成员变量!
package com.qf.oop;
/**
* --- 天道酬勤 ---
*
* @author QiuShiju
* @date 2024/1/26
* @desc 汽车
*/
public class Car {
double price;
String brand;// 品牌
/**
* 成员变量和局部变量重名,允许
* 为什么? 因为成员变量在内存堆中,局部变量在栈的方法中,并不在一起,所以不重复
*
* 当重名时,方法默认使用自己的局部变量(就近原则)
*
* 如果非要使用外部成员变量怎么办? java提供关键词,this
* this在方法内直接使用,this就代表调用这个方法 的对象
* (谁调用这个方法,this就是谁)
* this就可以调用属性和方法
* 例如 this.brand this.price
* this.driver()
*/
public void driver(int km){
System.out.println("this:"+ this );
double price = 390000;
// this.price 调用的是成员变量
System.out.println("一辆"+brand+",价值"+this.price+"元的车在开,行驶"+km+"公里" );
// 演示this调用方法
this.test();
}
public void test(){
System.out.println("这是this调用执行的方法" );
}
}
二、构造方法
2.1 无参构造
构造方法,又叫构造函数或者构造器, constructor
构造方法是干什么的?
- 创建对象
- 会给对象的属性初始化
构造方法在哪?
- 就在每个类中,默认是隐藏的,看不见
构造方法如何定义?
public 类名(){ }
构造方法的语法特点:
- 虽然是方法,但是没有返回值,也没有void
- 方法名必须是当前类名
- 每个类中都默认隐式提供一个无参构造,也可以主动显式写出来
package com.qf.oop;
/**
* --- 天道酬勤 ---
*
* @author QiuShiju
* @date 2024/1/26
* @desc 演示构造方法
*/
public class Student {
int age;
String name;
/**
* 构造方法每个类都有,默认隐藏的
* 可以显式的写出
*/
public Student(){
// System.out.println("Student()无参构造执行..." );
// age = 1;
// name = "小王吧";
}
public void study(){
System.out.println("学习" );
}
}
总结:
无参就是默认的创建对象的方式,一般情况下它创建出的对象内的属性是默认值
2.2 有参构造
为什么有无参构造?
- 是因为无参构造创建对象属性是默认值,还需要后续一个一个给属性赋值,有点麻烦
- 此时,有没有一种情况,创建出对象,对象就被指定了属性值? 有,那就是有参构造!!!
有参构造,就是定义构造方法的时候,指定可以接收参数,给属性赋值,这样创建出对象,对象就被赋指定了属性值
public 类名(数据类型 变量名,...){ 属性 = 变量; ... }
演示
package com.qf.oop;
/**
* --- 天道酬勤 ---
*
* @author QiuShiju
* @date 2024/1/26
* @desc 演示构造方法
*/
public class Student {
int age;
String name;
/**
* 构造方法每个类都有,默认隐藏的
* 可以显式的写出
*
*/
public Student(){
// System.out.println("Student()无参构造执行..." );
// age = 18;
// name = "小王吧";
}
// 有参构造
public Student(int age,String name){
this.age = age;
this.name = name;
}
public void study(){
System.out.println("学习" );
}
}
总结: 有参构造的好处,创建出对象,对象属性就有指定的值,方便一点
2.3 注意事项
- 如果没有提供任何一个,那每个类都有默认提供的是无参构造方法
- 可以显式写出有参,无参构造
- 但是一旦写出任何一个构造方法,默认的不再提供
- 有参无参构造 没有必须使用哪一个,自己看情况选择
2.4 练习
pdf5
2.5 补充this
this代表对象,可以调用属性,this.age ; 或者调用方法 this.work();
除此之外,this还可以调用构造方法.
语法
- this(); 调用当前类(自己类)的无参构造
- this(参数); 调用当前类(自己类)的有参构造
特殊的注意事项!!! -->
- 构造方法中使用this调用构造方法的语句必须放在第一行
三、重载
重载Overload
指同一个类中 方法的设计方式.
哪种设计方式?
- 方法名一样,但是参数列表不一样,以下任何一个不一样都算重载
- 参数个数不一样
- 顺序不一样
- 类型不一样
四、总结
重点就是 构造方法!!!
- 构造方法作用
- 有参无参区别
- 写法上的注意事项
- 创建对象时执行顺序