1、什么是类和对象?
对象:客观存在是事物(事物的特征)
面向对象:人关注的对象
类:确定对象将会拥有的属性和方法。
类的特点:类是对象的类型
具有相同属性和方法的一组对象的集合。
属性:对象拥有的特征
方法:对象执行的操作。也就是能干什么

类是抽象的概念
对象是看得见摸得着的实体。
2、如何定义一个类
a、定义类名 `public class 类名{
属性;
方法;

b、定义属性
c、定义方法

public class Phone{
    //属性,成员变量,有什么
    float screen;
    float cpu;
    float mem;
    //方法
    public void call(){
    System.out.println("可以打电话");
}
    public sendMessage(){
    System.out.println("可以发短信");
}
}

3、如何使用java中的对象

创建对象:类名 对象名=new 类名();
Phone p=new Phone();
使用对象:引用对象的属性,对象名.属性
p.screen=5.0f;
p.call();//调用对象的方法

4、java中的成员变量和局部变量
成员变量:在类中定义,用来描述对象将来要有什么。可以被本类的方法和其他与当前类有关系的类的方法使用。作用域在整个类内部。默认是0.

局部变量:在类的方法中定义,在方法中临时保存数据。只能在当前方法中使用。局部变量没有默认初始值。

在同一个方法中,不允许有同名的局部变量。
在不同的方法中,可以有同名的局部变量。

两类变量同名时,局部变量具有更高的优先级。
5、java中的构造方法

创建对象的时候实际上执行的是构造方法,也就是执行
Phone p=new Phone();的时候,执行的是系统默认的构造方法。

定义在JAVA类中的一个用来初始化对象的方法。
public 构造方法名(可以指定参数){


构造方法名与类名相同,没有返回值。

带参数的构造方法:
class Phone:
public Phone(float newScreen,float newCpu){
screen=newScreen;
cpu=newCpu;
}
main():
Phone p=new Phone(4.0f,2.0f);

有参和无参的构造方法是可以并存的

6、static 使用之静态变量

Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。

java 什么是类和对象 java中的类和对象是什么_构造方法

java 什么是类和对象 java中的类和对象是什么_初始化_02

7、static 使用之静态方法

静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如:

java 什么是类和对象 java中的类和对象是什么_初始化_03


如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。如:

java 什么是类和对象 java中的类和对象是什么_静态初始化_04


2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,如下所示:

java 什么是类和对象 java中的类和对象是什么_构造方法_05


3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。如:

java 什么是类和对象 java中的类和对象是什么_静态初始化_06

8、static 使用之静态初始化块

java 什么是类和对象 java中的类和对象是什么_java 什么是类和对象_07


在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。

需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。

java 什么是类和对象 java中的类和对象是什么_初始化_08

java 什么是类和对象 java中的类和对象是什么_构造方法_09


通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。

9、练习
public class HelloWorld {

String name; // 声明变量name
String sex; // 声明变量sex
static int age;// 声明静态变量age

// 构造方法
public   HelloWorld () { 
    System.out.println("通过构造方法初始化name");
    name = "tom";
}

// 初始化块
{ 
    System.out.println("通过初始化块初始化sex");
    sex = "男";
}

// 静态初始化块
    static   { 
    System.out.println("通过静态初始化块初始化age");
    age = 20;
}

public void show() {
    System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);
}

public static void main(String[] args) {

    // 创建对象
    HelloWorld hello = new HelloWorld();
    // 调用对象的show方法
    hello.show();

}

输出结果:
通过静态初始化块初始化age
通过初始化块初始化sex
通过构造方法初始化name
姓名:tom,性别:男,年龄:20