目录
1、类和对象
1.1、类(Class)
类是对现实生活中一类具有共同属性和行为的事物的抽象,确定对象将会拥有的属性和行为。
1.1.1、类的特点
- 类是对象的数据类型;
- 类是具有相同属性和行为的一组对象的集合。
1.1.2、类的组成(属性和行为)
- 属性:在类中通过成员变量来体现(类中方法外的变量);
- 行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)。
1.1.3、类的定义
类是Java程序的基本组成单位。
public class 类名{
//成员变量
数据类型1 变量1;
数据类型2 变量2;
...
范例:String name;
//成员方法
方法1;
方法2;
...
范例:public void study() {...}
}
1.2、对象(Object)
对象是能够看得到摸得着的真实存在的实体。
对象的属性:对象具有的各种特征。每个对象的每个属性都拥有特定的值。
对象的行为:对象能够执行的操作。
1.2.1、对象的创建和使用
创建对象:
格式:类名 对象名 = new 类名();
范例:Student stu = new Student();
使用对象的成员变量:
格式:对象名.变量名
范例:stu.name
使用对象的成员方法:
格式:对象名.方法名()
范例:stu.readBooks()
1.3、类和对象的使用范例
1)创建Student类:
package myPacket;
public class Student{
//成员变量
String name; //学生姓名
int score; //学生分数
//成员方法
public void introduce(){ //自我介绍
System.out.println("我是"+this.name+
",本次考试分数为:"+this.score);
}
}
2)创建test类并执行:
package myPackage;
public class test {
public static void main(String[] args) {
//创建第一个对象并使用
Student stu1 = new Student();
stu1.name = "张三"; stu1.score = 70;
stu1.introduce();
//创建第二个对象并使用
Student stu2 = new Student();
stu2.name = "李四"; stu2.score = 80;
stu2.introduce();
}
}
3)执行结果为:
2、成员变量和局部变量
- 成员变量:类中方法外的变量。
- 局部变量:方法中的变量。
区别 | 成员变量 | 局部变量 |
---|---|---|
类中位置不同 | 类中方法外 | 方法内或者方法声明上 |
内存中位置不同 | 堆内存 | 栈内存 |
声明周期不同 | 随着对象的存在而存在,随着对象的消失而消失 | 随着方法的调用而存在,随着方法的调用完毕而消失 |
初始化值不同 | 有默认的初始化值 | 没有默认的初始化值,必须先定义,赋值,才能使用 |
3、封装
3.1、private关键字
private关键字是一个权限修饰符,可以修饰成员(成员变量和成员方法),作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问。
针对private修饰的成员变量,如果需要被其他类使用,需要进行相应的操作:
- 提供“get变量名()”方法(变量名开头大写),用于获取成员变量的值,方法用public修饰;
- 提供“set变量名(参数)”方法(变量名开头大写),用于设置成员变量的值,方法用public修饰。
根据成员变量自动写出相应方法的快捷方式:按住Alt+Insert,在弹出的Generate窗口中,选择Getter或Setter,选择对应的成员变量,点击OK即可。
package myPackage;
public class Student{
//成员变量
private String name; //学生姓名
private int score; //学生分数
//提供get/set方法
public void setScore(int scr){
this.score = scr;
}
public void setName(String str){
this.name = str;
}
//成员方法
public void introduce(){ //自我介绍
System.out.println("我是"+this.name+
",本次考试分数为:"+this.score);
}
}
package myPackage;
public class test {
public static void main(String[] args) {
//创建第一个对象并使用
Student stu1 = new Student();
stu1.setName("张三"); stu1.setScore(70);
stu1.introduce();
//创建第二个对象并使用
Student stu2 = new Student();
stu2.setName("李四"); stu2.setScore(80);
stu2.introduce();
}
}
3.2、this关键字
- this修饰的变量用于指代成员变量:方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量;方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量。
- 使用this解决局部变量与成员变量同名的问题。
- this代表所在类的对象引用。方法被哪个对象调用,this就代表哪个对象。
3.3、封装
封装是面向对象三大特征之一(封装、继承、多态),是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的。
- 封装的原则:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问成员变量private,提供对应的getXxx()/setXxx()方法。
- 封装的好处:通过方法来控制成员变量的操作,提高了代码的安全性;把代码用方法进行封装,提高了代码的复用性。