Java面向对象进阶

2

Java面向对象进阶

  前面介绍了面向对象的四种访问控制权限。今天带小伙们看一看Java面向对象中的static关键字。

static关键字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package demo01;

public class JavaProgrammer {
//static修饰的成员变量称为静态成员变量,其特点是所有对象共享一份数据,也可称为类成员变量,说明这个成员变量不属于某一个对象,而是属于这个类。
static String language = "Java";
String name = "xxx";

public JavaProgrammer(String name) {
this.name = name;
}

//static修饰的成员方法称为静态成员方法,其特点是所有对象共享一个函数,也可称为类成员函数,注意类成员函数只能访问类成员变量,不可以访问普通成员变量。
static String getLanguage() {
return language;
}

String getName() {
return name;
}
}

package demo01;

public class Oop3 {
public static void main(String[] args) {
//使用静态成员方法时可以通过对象名.静态成员变量名,也可以通过类名.静态成员变量名,因为所有对象都拥有同一份数据,因此为了区分推荐使用类名.静态成员变量名
JavaProgrammer programmer1 = new JavaProgrammer("Alice");
System.out.println("程序员1号的名字是:" + programmer1.name + " 我会用的语言是:" + JavaProgrammer.language);
JavaProgrammer programmer2 = new JavaProgrammer("Bob");
System.out.println("程序员2号的名字是:" + programmer2.name + " 我会用的语言是:" + JavaProgrammer.language);
JavaProgrammer.language = "C++";
System.out.println("程序员1号的名字是:" + programmer1.name + " 我会用的语言是:" + JavaProgrammer.language);
System.out.println("程序员2号的名字是:" + programmer2.name + " 我会用的语言是:" + JavaProgrammer.language);
}
}

1

static代码块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package demo01;

public class Need {
String language;
int maxAge, minAge;
}

package demo01;

public class Person {

public Programmer programmer;
public static Need need = new Need();
//使用静态代码块,简单方便,易于修改,适合于特定场景的类当中。
static {
need.language = "Java";
need.minAge = 25;
need.maxAge = 35;
}

public Person(Programmer programmer) {
this.programmer = programmer;
}

public String isFit() {
return programmer.language.equals(need.language) && programmer.age >= need.minAge && programmer.age <= need.maxAge ? "符合条件" : "不符合条件";
}
}

package demo01;

public class Oop3 {
public static void main(String[] args) {
Person p1 = new Person(new Programmer("C++", 28));
Person p2 = new Person(new Programmer("Java", 26));
Person p3 = new Person(new Programmer("Java", 24));

System.out.println("本次招聘的需求是使用" + Person.need.language + " 年龄是" + Person.need.minAge + "~" + Person.need.maxAge + "岁");
System.out.println("我是程序员1,我使用的语言是:" + p1.programmer.language + "我的年龄是:" + p1.programmer.age + " " + p1.isFit());
System.out.println("我是程序员2,我使用的语言是:" + p2.programmer.language + "我的年龄是:" + p2.programmer.age + " " + p2.isFit());
System.out.println("我是程序员3,我使用的语言是:" + p3.programmer.language + "我的年龄是:" + p3.programmer.age + " " + p3.isFit());

Person.need.language = "C++";

System.out.println("本次招聘的需求是使用" + Person.need.language + " 年龄是" + Person.need.minAge + "~" + Person.need.maxAge + "岁");
System.out.println("我是程序员1,我使用的语言是:" + p1.programmer.language + "我的年龄是:" + p1.programmer.age + " " + p1.isFit());
System.out.println("我是程序员2,我使用的语言是:" + p2.programmer.language + "我的年龄是:" + p2.programmer.age + " " + p2.isFit());
System.out.println("我是程序员3,我使用的语言是:" + p3.programmer.language + "我的年龄是:" + p3.programmer.age + " " + p3.isFit());
}
}

1

Java小结

  今天的内容也非常重要,static关键字,要记得它不属于某一个对象,而是属于整个类,因此在以后的访问中尽量使用类名的方式进行访问。

-------------本文结束感谢您的阅读-------------
0%