1.面向对象初识别
什么是面向对象?
类与对象时整个面向对象中最基础的组成单元。
类:是抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法);
对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。
3.1 类的定义和使用
// 创建类
class ClassName{
field; // 字段(属性) 或者 成员变量
method; // 行为 或者 成员方法
}
3.2 类的实例化
class Rabbit{
public String name;
public String color;
public void eat() {
System.out.println("like grass");
}
}
public class Test {
//类的实例化
public static void main(String[] args) {
Rabbit rabbit = new Rabbit();
System.out.println(rabbit.name = "小灰灰");
System.out.println(rabbit.color = "灰色");
rabbit.eat();
}
}
运行结果
注意:new 关键字用于创建一个对象的实例
使用 【 . 】 来访问对象中的属性和方法.
当一个实例化对象产生之后,可以按照如下的方式进行类的操作:
对象.属性:表示调用类之中的属性;
对象.方法():表示调用类之中的方法。
4. this 引用
作用:让编译器区分成员变量和形参
栗子:
public class Date {
public int year;
public int month;
public int day;
public void setDay(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
public void printDate(){
System.out.println(this.year + "/" + this.month + "/" + this.day);
}
}
public static void main(String[] args) {
int a = 10;
System.out.println(a);
}
对象初始化
public static void main(String[] args) {
Date d = new Date();
d.printDate();
d.setDate(2021,6,9);
d.printDate();
}
5.2 构造方法
public class Date {
public int year;
public int month;
public int day;
// 构造方法:
// 名字与类名相同,没有返回值类型,设置为void也不行
// 一般情况下使用public修饰
// 在创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次
public Date(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
System.out.println("Date(int,int,int)方法被调用了");
}
public void printDate() {
System.out.println(year + "-" + month + "-" + day);
}
public static void main(String[] args) {
// 此处创建了一个Date类型的对象,并没有显式调用构造方法
Date d = new Date(2021,6,9);
// 输出Date(int,int,int)方法被调用了
d.printDate(); // 2021-6-9
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/a943063622e79c0ded2165432d0469c3.png)
6.3.2 导入包中的类
使用 import语句导入包
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date date = new Date();
// 得到一个毫秒级别的时间戳
System.out.println(date.getTime());
}
}
7. static成员
static修饰成员变量
static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的。
【静态成员变量特性】
1. 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中
2. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问
3. 类变量存储在方法区当中
4. 生命周期伴随类的一生(即:随类的加载而创建,随类的卸载而销毁)
static修饰成员方法
Java中,被static修饰的成员方法称为静态成员方法,是类的方法,不是某个对象所特有的。静态成员一般是通过
静态方法来访问的。
【静态方法特性】
1. 不属于某个具体的对象,是类方法
2. 可以通过对象调用,也可以通过类名.静态方法名(...)方式调用,更推荐使用后者
3. 不能在静态方法中访问任何非静态成员变量
static成员变量初始化
静态成员变量的初始化分为两种:就地初始化 和 静态代码块初始化
8. 代码块概念以及分类
普通代码块
定义在方法中的代码块
构造块
实例代码块。构造代码块一般用于初始化实例成员变量
静态块
使用static定义的代码块称为静态代码块。一般用于初始化静态成员变量。
同步代码块
public class OutClass {
class InnerClass{
}
}
// OutClass是外部类
// InnerClass是内部类
public class OutClass {
// 成员位置定义:未被static修饰 --->实例内部类
public class InnerClass1{
}
// 成员位置定义:被static修饰 ---> 静态内部类 static class InnerClass2{ }
public void method() {
// 方法中也可以定义内部类 ---> 局部内部类:几乎不用
class InnerClass5{
}
}
}