类、对象和包
1) 面向对象编程(Object Oriented Programming ,简称 OOP):20世纪70年代以后开始流行。
2) 结构化编程与面向对象编程的区别:
A. 在结构化编程中,程序主要围绕着解决的任务来设计。编写程序就是编写执行特定任务的过程,过程中需要用到的数据通过过程参数传递到过程中。过程可以查看以及改变传递进来的数据,并可以将值返回给调用它的过程。
B. OOP主要围绕着解决的问题中的对象来设计,对于每个对象,我们会编写一个类来描述对象的属性和行为。
3) 何为对象和类?
A. 对象:“万物皆对象”、对象由属性和行为组成,属性是对象所具有的特征,行为是对象可以做到动作。
B. 类:类是具有相同属性和行为的一组对象的集合。对象的每个属性被表示为类中的一个成员变量,每个行为成为类中的一个方法。
C. 两者关系:类是对象的抽象(描述),对象是类的实例。
4) 成员变量和局部变量
A. 成员变量:在类中声明的变量,有默认值,可以用在一个类的所有地方。
成员变量的数据类型 | 初始值 |
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
float | 0.0 |
double | 0.0 |
char | null |
boolean | flase |
a. 成员变量组成部分:
— 访问修饰符(public 公用的、private 私有的、protected 受保护的、默认的)
— 数据类型
— 成员变量名称(必须是一个有效的标识符)。后面用分号结束
例如:
/**
* 学生
*
* @author Administrator
*
*/
public class Student {
/* 属性 成员变量 */
public String name = null; // 姓名
public String sex; // 性别
public int age; // 年龄
public String stuNo; // 学号
}
B. 局部变量:在方法中声明的变量,没有默认值,仅限于在一个方法中有用。
b. 局部变量组成部分:
— 访问修饰符
— 返回值
— 方法名称(必须是一个有效的标识符)
— 参数列表,在括号中出现
例如:
/* 方法 */
访问修饰符 返回值类型 方法名([参数列表]) {
方法主体 -- 待实现的功能代码块
}
*/
public void introduce() {
System.out.println(this.toString());
System.out.println("姓名:" + name + "\n性别:" +
sex + "\n年龄:" + age +
"\n学号:" + stuNo);
}
5) 如何创建对象以及 访问对象的属性和方法?
对象 对象名 = new 对象();
对象名.属性 = 。。。;
例如:
import java.util.Scanner;
public class StudentTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
/* 创建学生对象 */
Student stu = new Student();
stu.introduce();
// 为对象属性赋值
// 如何调用对象的属性 对象名.属性名
System.out.print("请输入姓名:");
stu.name = input.next();
System.out.print("请输入性别:");
stu.sex = input.next();
// 调用对象的方法,实现自我介绍
// 对象名.方法名([实参列表]);
System.out.println("********************");
stu.introduce();
}
}
6) this 引用:当局部变量与成员变量重名时,使用this。(this 指代的是当前对象)
7) 包(关键字:package):包声明必须是源代码文件中除注释以外的第一条语句。
例如:
package com.lovo;
public class StudentTest {
public static void main(String[] args) {
Student student = new Student("0051", "王菲", 24);
Student stu = new Student();
student.display();
}
A. 用途:
a. 提供了一个组织类的机制。同时可以防止类命名冲突。
b. 为包中的类提供了一个命名空间。
B. 使用import关键字导入其它包中的类:
a. 使用类的全名。例如:pay.Employee;
b. 使用关键字import以及通配符(*)导入包。例如:import pay.*;
c. 使用关键字import导入类本身。例如:import pay.Employee;