一、类的定义
1.什么是类
类是用来对一个实体
(
对象
)
来进行描述的
,主要描述该实体
(
对象
)
具有哪些属性
(
外观尺寸等
)
,哪些功能
(
用来干 啥)
,描述完成后计算机就可以识别了。
2.如何定义类
类中包含成员变量和成员方法。
class Student{
Public String name;
Public double score;
Public int age; //成员变量
Public void Reading(){
System.out.println(this.name+"正在读书...");
}
Public void Classing(){
System.out.println(this.name+"正在上课...");
}
//成员方法
}
采用
Java
语言将洗衣机类在计算机中定义完成,经过
javac
编译之后形成
.class
文件,在
JVM
的基础上计算机就可以
识别了。
二、类的实例化
定义了一个类,就相当于在计算机中定义了一种新的类型
,与
int
,
double
类似,只不过
int
和
double
是
java
语言自
带的内置类型,而类是用户自定义了一个新的类型,比如上述的:
PetDog
类和
Student
类。它们都是类
(
一种新定
义的类型
)
有了这些自定义的类型之后,就可以使用这些类来定义实例
(
或者称为对象
)
。
用类类型创建对象的过程,称为类的实例化
,在
java
中采用
new
关键字,配合类名来实例化对象。
public class Main{
public static void main(String[] args) {
Student student1 = new Student;
student1.name = mike;
student1.age = 18;
Student student2 = new Student;
student2.name = lisa;
student2.age = 19;
}
}
通过new关键字来对类进行实例化,类是一种自定义类型,可以用来定义变量,一个类可以实例化多个对象。
三、this关键字的使用
1.为什么我们要用this关键字
public void setDay(int year, int month, int day){
year = year;
month = month;
day = day;
}
这里我们会发现Setday不知道到底是谁给谁赋值?所以我们可以使用this关键字来标注这里的成员变量。
public void setDay(int year, int month, int day){
this.year = year;
this.month = month;
this.day = day;
}
this
引用指向当前对象
(
成员方法运行时调用该成员方法的对象
)
,在成员方法中所有成员变量的操作,都是通过该
引用去访问
。
- this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型。
- this只能在"成员方法"中使用。
- 在"成员方法"中,this只能引用当前对象,不能再引用其他对象。
- this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法 。
四、对象的构造及初始化
1.什么是构造
构造方法
(
也称为构造器
)
是一个特殊的成员方法,
名字必须与类名相同,在创建对象时,由编译器自动调用,并且
在整个对象的生命周期内只调用一次
。
2.如何使用构造方法
// 无参构造方法
public Student(){
this.name = xiaoming;
this.age = 18;
}
// 带有两个参数的构造方法
public Student(String name, int age){
this.name = name;
this.age = age;
}
如果没有定义任何构造方法,编译器会默认生成一个构造方法,且这个构造方法一定是无参的。
五、封装
1.如何理解封装
像生活中的手机,电脑等都进行了封装,所谓封装就是别人把细节隐藏起来,只提供一些接口等来供用户使用。用户并不需要了解主板、CPU、内存条等东西,所以商家就把这些封装起来,只提供了充电口、耳机口等。
封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行 交互
2.访问限定符
private | default | protected | public | ||
---|---|---|---|---|---|
1 | 同一包中的同一类 | √ | √ | √ | √ |
2 | 同一包中的不同类 | √ | √ | √ | |
3 | 不同包中的子类 | √ | √ | ||
4 | 不同包中的非子类 | √ |
六、static的使用
public class Main{
public static void main(String[] args) {
Student student1 = new Student;
student1.name = mike;
student1.age = 18;
student1.class = 1;
Student student2 = new Student;
student2.name = lisa;
student2.age = 19;
student2.class = 1;
}
}
我们会发现学生1和2的班级是一样的,那我们是否能将他合并,不用分开写了呢,我们可以借助static来对成员变量进行静态处理。,将班级设为静态变量。
class Student{
Public String name;
Public double score;
Public int age;
Public static class = 1; //成员变量
Public void Reading(){
System.out.println(this.name+"正在读书...");
}
Public void Classing(){
System.out.println(this.name+"正在上课...");
}
//成员方法
}
static
修饰的成员变量,称为静态成员变量
,静态成员变量最大的特性:
不属于某个具体的对象,是所有对象所共
享的
。