Java的类和对象
类与对象的初步认知
1.JAVA是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成
2.面向对象注重的是对象,也就是参与过程所涉及到的主体。是通过逻辑将一个个功能实现连接起来
3.类就是一类对象的统称。对象就是这一类具体化的一个实例。
4.面向对象的好处:将复杂的事情变简单了,只要面对一个对象就行。
总的来说:类相当于一个模板,对象是由模板产生的样本。一个类,可以产生无数的对象。
基本语法:
// 创建类
class <class_name>{
field;//成员属性
method;//成员方法
}
// 实例化对象
<class_name> <对象名> = new <class_name>();
class为定义类的关键字,ClassName为类的名字,{}中为类的主体。
类中的元素称为:成员属性。类中的函数称为:成员方法。
举例:
class Person {
public int age;//成员属性 实例变量
public String name;
public void eat() {//成员方法
System.out.println("吃饭!");
}
public void sleep() {
System.out.println("睡觉!");
}
}
类的实例化
1.用类类型创建对象的过程,称为类的实例化
2.一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量
举例:
public class Person {
public int age;//成员属性
public String name;
public String sex;
public void eat() {//成员方法
System.out.println("吃饭!");
}
public void sleep() {
System.out.println("睡觉!");
}
public static void main(String[] args) {
Person person = new Person();
person.eat();//成员方法调用需要通过对象的引用调用
person.sleep();
}
}
//执行结果:
吃饭!
睡觉!
封装
字段和方法都被private修饰,此时就说把这个字段或者这个方法进行了封装。
注:被private修饰的字段和方法,只能在当前类当中使用,不能在类外使用。
class FengZhuang {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void show() {
System.out.println("name:" + name + "age:" + age);
}
public static void main(String[] args) {
Person person = new Person();
person.setName("Qingchen");
String name = person.getName();
System.out.println(name);
person.show();
}
}
//执行结果
Qingchen
name: Qingchen age: 0
注:getName 即为 getter 方法, 表示获取这个成员的值.
setName 即为 setter 方法, 表示设置这个成员的值
构造方法
基本语法:构造方法是一种特殊方法, 使用关键字new实例化新对象时会被自动调用, 用于完成初始化操作.
语法规则
1.方法名称必须与类名称相同
2.构造方法没有返回值类型声明
3.每一个类中一定至少存在一个构造方法(没有明确定义,则系统自动生成一个无参构造)
注意事项
-如果类中没有提供任何的构造函数,那么编译器会默认生成一个不带有参数的构造函数
-若类中定义了构造方法,则默认的无参构造将不再生成.
-构造方法支持重载. 规则和普通方法的重载一致。
认识代码块
代码块就是使用 {} 定义的一段代码.
根据代码块定义的位置以及关键字,又可分为以下四种:
1.普通代码块:定义在方法中的代码块。
2.构造代码块:定义在类中的代码块(不加修饰符)。也叫:实例代码块。构造代码块一般用于初始化实例成员变量。
3.静态代码块:使用static定义的代码块。一般用于初始化静态成员属性。
- 静态代码块不管生成多少个对象,其只会执行一次,且是最先执行的。
- 静态代码块执行完毕后, 实例代码块(构造块)执行,再然后是构造函数执行。
4.同步代码块
匿名对象
匿名只是表示没有名字的对象.
- 没有引用的对象称为匿名对象.
- 匿名对象只能在创建对象时使用.
- 如果一个对象只是用一次, 后面不需要用了, 可以考虑使用匿名对象