方法的重载 overloading
方法名相同,参数表不同(个数、类型、顺序)
只能出现在一个类里
方法的覆盖 overriding
子类对父类定义的方法进行重新定义
1.方法名、返回值类型、参数表相同
2.修饰符不能更窄
3.抛出的异常不能更多
### Java学习笔记:方法的重载与覆盖及数据库操作基础
#### 方法的重载 (Overloading)
在Java中,**方法的重载**(Overloading)指的是在同一类中可以定义多个同名方法,但这些方法必须有不同的参数列表。这里的“不同”可以指参数的数量不同、类型不同或参数的顺序不同。
- **例子**:
```java
public class Example {
public void method(int x) {
// 方法体
}
public void method(String s) {
// 方法体
}
public void method(int x, String s) {
// 方法体
}
public void method(String s, int x) {
// 方法体
}
}
```
- **注意**:
- 方法的重载只发生在同一个类内。
- 返回类型不影响方法的重载。
- 参数列表必须完全不一致(包括数量、类型和顺序)。
#### 方法的覆盖 (Overriding)
**方法的覆盖**(Overriding)是指子类对继承自父类的方法进行重新定义,以实现不同的功能或行为。
- **规则**:
1. **方法签名必须相同**:方法名、返回值类型以及参数列表都必须一致。
2. **访问修饰符不能更窄**:如果父类方法是`public`的,那么子类中的覆盖方法也必须是`public`的;但可以更宽泛,如从`protected`变为`public`。
3. **抛出的异常不能更多**:子类覆盖方法抛出的异常类型要么与父类方法相同,要么是父类方法抛出异常的子类。
- **例子**:
```java
public class Animal {
public void makeSound() {
System.out.println("Animal makes a sound");
}
}
public class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow");
}
}
```
- **注意**:
- `final`和`private`的方法不能被覆盖。
- 覆盖方法时必须使用`@Override`注解来确保正确性。
#### 数据库操作基础
这部分内容主要介绍了一些基础的数据库操作命令,特别是针对MySQL数据库的操作。
- **创建数据库** (`CREATE DATABASE`):
```sql
CREATE DATABASE ems;
USE ems;
```
- **创建数据表** (`CREATE TABLE`):
```sql
CREATE TABLE emp (
id INT(8) PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(10),
birthday DATE,
salary DOUBLE(10, 2)
);
DESC emp;
```
- **插入数据** (`INSERT INTO`):
```sql
INSERT INTO emp
VALUES (1, 'Tom', '123', '1986-12-11', 5000.0);
```
- **查询数据** (`SELECT`):
```sql
SELECT * FROM emp;
SELECT username, salary FROM emp WHERE id = 3;
```
- **更新数据** (`UPDATE`):
```sql
UPDATE emp
SET salary = salary + 1000.0
WHERE username = "Mary";
```
- **删除数据** (`DELETE`):
```sql
DELETE FROM emp
WHERE id = 3;
```
#### Java连接MySQL示例
在Java程序中,通常使用JDBC (Java Database Connectivity) 来连接和操作MySQL数据库。
- **加载驱动**:
```java
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ems", "username", "password");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
```
- **静态初始化块**:
```java
public class MySQLDriver implements Driver {
static {
try {
DriverManager.registerDriver(new MySQLDriver());
} catch (SQLException e) {
throw new RuntimeException("Can't register driver!");
}
}
}
```
通过以上知识点的学习,我们不仅了解了Java中的方法重载和覆盖的基本概念,还掌握了如何在Java中操作MySQL数据库的基本方法。这对于开发基于Java的应用程序是非常有用的。