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 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。
7、static 使用之静态方法
静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如:
如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。如:
2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,如下所示:
3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。如:
8、static 使用之静态初始化块
在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。
需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 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