知识总览:
一、类和对象
1 对象概述
对象:客观存在的事物都是对象
面向对象:了解和关注对象的信息
属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值
行为:对象能够执行的操作
2 类的概述
类:类是对现实生活中一类具有共同属性和行为的事物的抽象,是Java程序的基本组成单位
特点:
类是对象的数据类型
类是具有相同属性和行为的一组对象的集合
属性:在类中通过成员变量来体现
行为:在类中通过成员方法来体现
3 类的定义
定义类
编写成员变量和成员方法
public class 类名{ //成员变量 变量1的数据类型 变量1; 变量2的数据类型 变量2; //成员方法 方法1; 方法2;
如定义一个学生类:
public class Student{ // 4个成员变量 public String name; public int age; public String major; public String interests; //1个成员方法 public void say(){ System.out.println(name+age); }
4 对象的使用
创建对象:
格式:类名 对象名 = new 类名()
使用对象:
格式:对象名.变量名
使用方法:
格式:对象名.方法名()
如:
public class StudentDemo { public static void main(String[] args){ //创建对象 Student s = new Student(); //使用成员变量 s.name = "张三"; s.age = 18; s.major = "计算机系"; s.interests = "学习"; //使用成员方法 s.say(); } }
二、成员变量和局部变量
1 成员变量
类中方法外的变量
如:
public class Student{
// 4个成员变量
public String name;
public int age;
public String major;
public String interests;
//方法
方法1();
}
2 局部变量
方法中的变量
如:
public class Student{
// 4个成员变量
public String name;
public int age;
public String major;
public String interests;
//1个成员方法
public void say(){
int i = 0;// 方法类的变量是局部变量
System.out.println(name+age);
}
3 成员变量与局部变量的区别
区别 | 成员变量 | 局部变量 |
类中位置不同 | 类中方法外 | 方法内或方法声明上 |
内存中位置不同 | 堆内存 | 栈内存 |
生命周期不同 | 随着对象的存在而存在,消失而消失 | 随着方法的调用而存在,随着方法的调用完毕而消失 |
初始值不同 | 有默认的初始化值 | 没有默认的初始化值,必须先定义,赋值才能使用 |
三、封装
1 private关键字
作用:权限修饰符,保护成员不被别的类使用,被private修饰的成员智能在本类中才能访问
可以修饰成员变量和成员方法
访问private修饰的成员变量需要:
get变量名()方法,用于获取成员变量的值方法用public修饰
set变量名()方法,用于设置成员变量的值方法用public修饰
如:
public class Student1 {
//使用private修饰成员变量
private int number;
private int state;
private int score;
//get和set方法
public void setNumber(int a){
number = a;
}
public int getNumber(){
return number;
}
public void setState(int a){
state = a;
}
public int getState(){
return state;
}
public void setScore(int a){
score = a;
}
public int getScore(){
return score;
}
}
2 this关键字
this修饰的变量用于指代成员变量
方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量
什么时候使用this呢?解决局部变量隐藏成员变量
如:
public class Student1 {
private int number;
private int state;
private int score;
// 当局部变量名与成员变量名一样时需要使用this关键字
public void setNumber(int number){
this.number = number;
}
public int getNumber(){
return number;
}
public void setState(int state){
this.state = state;
}
public int getState(){
return state;
}
public void setScore(int score){
this.score = score;
}
public int getScore(){
return score;
}
}