Java
标签
绩点/专业课
开发/基础/语言
字数
776 字
阅读时间
4 分钟
SEE YOU AGAIN
和 Gemini 聊了一晚上,这没怎么写了
构造方法
易错点
子类会自动调用父类的无参构造方法;父类没有无参调用方法则需要显式调用
关键字
static
访问修饰符 private protected public
非访问修饰符 final
this 和 super
this
- 区分成员变量和局部变量
Java
public class Student {
private String name; // 成员变量
public Student(String name) { // 构造方法的参数
this.name = name; // 使用this.name来指代成员变量,name指代参数
}
public void setName(String name) { // 方法的参数
this.name = name; // 同上
}
public String getName() {
return this.name; // 这里的this可以省略,因为没有命名冲突
}
}- 在构造方法中调用其他构造方法 必须是第一条
Java
public class Rectangle {
private int width;
private int height;
public Rectangle() {
this(1, 1); // 调用下面的有参构造方法,创建默认大小的矩形
}
public Rectangle(int width, int height) {
this.width = width;
this.height = height;
}
}- 返回当前类的实例
Java
public class Calculator {
private int result = 0;
public Calculator add(int num) {
this.result += num;
return this; // 返回当前对象,以便继续调用其他方法
}
public Calculator subtract(int num) {
this.result -= num;
return this;
}
public int getResult() {
return this.result;
}
public static void main(String[] args) {
Calculator calc = new Calculator();
int finalResult = calc.add(10).subtract(3).getResult(); // 链式调用
System.out.println(finalResult); // 输出 7
}
}super
- 调用父类的构造方法 必须是第一条
Java
public class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
}
public class Dog extends Animal {
public Dog(String name) {
super(name); // 调用父类Animal的有参构造方法
}
}- 访问父类的成员变量
Java
public class Parent {
String message = "Hello from Parent";
}
public class Child extends Parent {
String message = "Hello from Child";
public void printMessages() {
System.out.println(this.message); // 输出 "Hello from Child"
System.out.println(super.message); // 输出 "Hello from Parent"
}
}```
3. 调用被子类重写的方法
```Java
public class Vehicle {
public void move() {
System.out.println("Vehicle is moving");
}
}
public class Car extends Vehicle {
@Override
public void move() {
super.move(); // 调用父类Vehicle的move方法
System.out.println("Car is moving on the road");
}
}Tip 1: 不可连续使用,如super.super
字符串
| 表达式 | 对象的最终位置 | 描述 |
|---|---|---|
| "Hello" | 字符串常量池 | 字符串字面量,在池中是唯一的 |
| new String("Hello") | 堆 (Heap) | 强制在堆上创建一个新的对象,地址是全新的 |
| new String("Hello").intern() | 字符串常量池 | 方法调用,其返回值是池中对象的引用 |
易错题
2. (单选题, 3.8分) 下列代码会出现数据溢出的情况是:
A int i = 128; byte b = (byte)i;
B double d = 1.0; int i = (int)d;
C int i = 5; long l = i;
D short s = 2; int i = s;
3. (单选题, 3.8分) 下列关于类的继承说法错误的是?
A 子类继承父类
B Java支持多继承
C 子类可重写父类方法
D 子类可拥有父类属性
misc
java 加号左结合 a+b+c = (a+b)+c
set 和 list arraylist 和 linkedlist
arr.length 和 str.length()
类/接口 异常 线程thread IO
Kiracoon