1.类的封装
*在定义一个类时,将类中的属性私有化,即使用prviate关键字来修饰,私有属性只能在它所在的类中被访问。为了能让外界访问私有属性,需要提供一些使用public修饰的公有方法,其中包括用于获取属性值的getXxx()方法和设置属性值的setXxx()方法。
class Student {
private String name; //将name 属性私有化
private int age; //将 age 属性私有化
//下面是公有的getXxx() 和 setXxx()方法。
public String getName(){
return name;
}
public void setName(String stuName){
name = stuName;
}
public int getAge(){
return age;
}
public void setAge(int stuAge){
//对传入的参数进行检查
if(stuAge <= 0 ){
System.out.println("年龄不合法.......");
}else{
age = stuAge;
}
}
public void introduce(){
System.out.println("大家好,我叫"+ name + ",我今年"+ age + "岁!");
}
}
public class ExampleTest{
public static void main(String[] args){
Student stu = new Student();
stu.setAge(-30);
stu.setName("liming");
}
}
2.this 关键字
* 通过 this 关键字可以明确地去访问一个类的成员变量,解决与局部变量名称冲突问题。
class Person{
int age;
public Person(int age){
this.age = age;
}
public int getAge(){
return this.age;
}
}
* 通过 this 关键字调用成员方法
class Person{
public void openMonth(){
.....
}
public void speak(){
this.openMonth();
}
}
* 构造方法是在实例化对象时被java虚拟机自动调用的,在程序中不能像调用其他方法一样去调用构造方法,但可以在一个构造方法中使用this关键字的形式来调用其他构造方法
class Person{
public Person(){
System.out.println("无参构造方法被调用了......");
}
public Person(String name){
this();
System.out.println("有参构造方法被调用了......");
}
}
public class ExampleTest{
public static void main (String[] args){
//实例化Person对象
Person p = new Person("itcast");
}
}
* 在使用this调用类的构造方法时,应该注意以下两点
1.只能在构造方法中使用this调用其他的构造方法,不能在成员方法中使用
2.在构造方法中,使用this调用构造方法的语句必须放在第一行,且只能出现一次。
public Person(){
String name = "小名";
this(name); //由于不在第一行,编译错误
}
3.static 关键字
* 静态变量,在一个java类中,可以使用 static 关键字来修饰成员变量,该变量被称作静态变量。静态变量被所有实例共享,可以使用"类名.变量名"的形式来访问。
class Student{
static String schoolName; //定义静态变量
}
public class ExampleTest{
public static void main(String[] args){
Student stu1 = new Student();
Student stu2 = new Student();
Student.schoolName = "阳明圣院"; //为静态变量赋值
System.out.println("我的学校是"+stu1.schoolName);
System.out.println("我的学校是"+stu2.schoolName);
}
}
注意:static关键字只能用于修饰成员变量,不能用于修饰局部变量
* 静态方法 ,在一个java类中,方法前有 static 关键字修饰,我们称这种方法为静态方法。不需要创建类即可访问,访问方式"类名.方法名"。
class Person{
public static void sayHello(){ //定义静态方法
System.out.println("hello");
}
}
class ExampleTest{
public static void main(String[] args){
Person.sayHello();
}
}
注意:在一个静态方法中只能访问用static修饰的成员,原因在于没有被static修饰的成员需要先创建对象才能访问。
* 静态代码块,用 static 关键字修饰的代码块称为静态代码块。当类被加载时,静态代码块会执行,由于类只加载一次,因此静态代码块之执行一次。
4.单例模式
* 单例模式是java中的一种设计模式,它是指在设计一个类时,需要保证在整个程序运行期间针对该类只存在一个实例对象。
class Single{
//自己创建一个对象
private static Single INSTANCE = new Single();
private Single(){} //私有化的构造方法
public static Single getInstance(){ //提供返回对象的静态方法
return INSTANCE;
}
}
* 单例模式具备如下特点
1.类的构造方法使用private修饰,声明为私有,这样就不能在类的外部使用new关键字来创建对象了
2.在类的内部创建了一个该类的实例对象,并使用静态变量INSTANCE引用该对象,由于变量应该禁止外界直接访问,因此使用private声明为私有成员
3.为了让类的外部能够获得类的实例对象,定义了一个静态方法getInstance(),用于返回该类实例INSTANCE.外界可以通过" Single.getInstance() "来获取该实例