再续前缘面向对象
书接上回构造器
在Java中,可以通过在空参构造方法中使用 this() 关键字来调用类中其它的构造方法。
使用 this() 关键字来调用其它构造方法时,需要注意以下几点:
1.this() 必须是构造方法的第一条语句;
2.一个构造方法内最多只能调用一次 this() 方法;
3.在调用 this() 方法时,参数列表必须满足所调用的构造方法的要求,即形参类型和数量要与被调用的构造方法一致;
4.如果没有手动定义任何构造方法,则系统会自动生成一个无参构造方法,即使不显式地书写,Java也会为我们提供一个默认的空参构造方法。
static关键字
在类中,用static声明的成员变量为静态成员变量 ,或者叫做: 类属性,类变量.
它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化,
对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!
可以使用”对象.类属性”来调用。不过,一般都是用“类名.类属性”
static变量置于方法区中!
用static声明的方法为静态方法
不需要对象,就可以调用(类名.方法名)
在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可直接访问非static的成员。
但是可以通过对象使用。
静态方法不能以任何方式引用this和super关键字
block块
静态代码块
声明位置 类中,方法外
作用 整个类进行某些初始化操作(静态属性赋值...)
执行时机 类第一次加载时,只执行一次,如果多个静态块,从上倒下一次执行
构造代码块
声明位置 类中,方法外
作用 构造代码块是为对象初始化操作(为静态或非静态成员属性赋值...)
执行时机 创建对象时,执行构造器代码之前执行,如有多个,从上倒下一次执
行
普通语句块
声明位置 方法中
作用 声明一些临时变量等..
执行时机 跟随方法执行
同步代码块(未完待续~)
声明位置
作用
执行时机
注意
类第一次被载入时先执行static代码块;
类多次载入时,static代码块只执行一次;
static块经常用来进行static变量的初始化。是在类初始化时执行,不是在创建对象时执行。
静态初始化块中不能访问非static成员。
构造块被被编译到将要执行的构造器代码之前执行
区别
静态块,仅在类的第一次使用时加载。
构造块,先于构造器执行,每创建一个对象执行一次
private私有化
private是一种访问修饰符,用于限制类的成员变量和成员方法的访问范围。
private修饰的成员只能在定义它所属的类内部访问,其他类无法直接访问。
1 总之,属性私有化是Java面向对象编程中的重要概念,它可以有效的保护对象数据的安全性,同时也可以提高程序的可维护性和易用性。
2 但需要注意的是,过度的属性私有化会增加程序的复杂性,因此在进行设计时应该根据实际需求来灵活运用。
3 使用private修饰成员变量可以增加程序的安全性和稳定性,避免了其他类直接修改它,也可以实现对成员变量的封装。
封装是面向对象编程中的一个重要概念,它指的是隐藏类的内部细节,仅对外部提供有限的接口,从而使得程序更加安全和可靠。
例如,我们定义一个Person类,其中包括一个private的age属性,以及公开的setAge和getAge方法:
public class Person {
private int age;
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
上述代码中,age属性被设置为private,只有Person类内部才能直接访问,其他类无法直接访问。同时,Person类提供了公开的setAge和getAge方法,用于设置和获取age属性的值。这样设计的好处是,外界程序无法直接修改age属性的值,必须通过Person类提供的方法来进行操作。这不仅提高了程序的安全性,还使得程序更加易于维护和调试。
封装
封装是Java中的一个面向对象编程的原则,指将类的内部数据和方法保护起来,只对外界暴露一些必要的接口。
问控制
通过private、protected、public等访问控制符来限制属性和方法的访问权限,从而防止程序对类的内部实现细节进行修改,确保数据的安全性和可靠性。
public class Person {
private String name;
protected int age;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
- name属性使用了private访问控制符,只有Person类内部才能直接访问该属性,其他类无法访问。age属性使用了protected访问控制符,可以被该类的子类直接访问,但其他类无法直接访问。
- 隐藏实现细节
封装还可以隐藏类的实现细节,使得类的内部实现细节对外部不可见,对外部提供的方法只需要传入必要的参数并返回相应的结果即可。通过这种方式,可以有效的防止外部程序对类的内部进行不必要的干涉和修改,提高了程序的可维护性。
public class Person {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
if (age >= 0) {
this.age = age;
} else {
System.out.println("年龄不能为负数!");
}
}
public int getAge() {
return age;
}
}
通过private、protected、public等访问控制符来限制属性和方法的访问权限,从而防止程序对类的内部实现细节进行修改,确保数据的安全性和可靠性。 隐藏内部的实现细节,对外提供一对公共的访问方式