java面向对象
面向对象与包
面向对象
面向过程 vs 面向对象
| 面向过程 | 面向对象 | |
|---|---|---|
| 侧重点 | 强调参与者 | 强调调用者 |
| 适用场景 | 需求较小的问题 | 需求较大的问题 |
| 维护性 | 代码多,维护性差 | 方法封装到类,便于维护 |
类与对象
- 类:一组相关属性和行为的集合,是事物的模板(抽象)
- 对象:类的具体实例(具体),具备该类事物的属性和行为
面向对象三大特性
封装、继承、多态
构造函数
特点
- 方法名必须和类名完全相同
- 不要声明返回类型
- 不能被
static、final、abstract、synchronized、native修饰 - 不能有
return语句返回值
注意
如果类中写了一个有参构造方法,编译器不再提供默认的无参构造方法,需要手动添加。
示例
public class Student {
private String name;
private int age;
// 无参构造函数
public Student() {
this("李四", 18);
}
// 有参构造函数
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public void doHomework() {
System.out.println(name + "做作业!今年" + age + "岁");
}
}
public class TestStudent {
public static void main(String[] args) {
Student stu = new Student("张三", 18);
stu.doHomework();
}
}
this 关键字
- 区分成员变量和局部变量
- 调用其他构造方法
包(package)
规则
- 使用
package关键字创建包 - 包声明必须是源代码第一行(前面只能有注释或空行)
- 包名一般为小写,要有意义
编译与运行
# 编译
javac org/lanqiao/test/TestPackage.java
# 运行(用 . 分割包路径)
java org.lanqiao.test.TestPackage
导入
import 包名.类名; // 导入单个类
import 包名.*; // 导入包中所有类
全限定名
包名 + 类名,如 org.lanqiao.test.TestPackage