面向对象有三大特征:封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。 本节讲封装。
class Woman {
private String name;
private int age;
private Man husband;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setHusband(Man husband) {
this.husband = husband;
}
public Man getHusband() {
return husband;
}
}
public class Man {
private String name;
private int age;
private Woman wife;
public void setName(String Name) {
this.name = Name;
}
public String getName() {
return this.name;
}
public void setAge(int Age) {
this.age = Age;
}
public int getAge() {
return this.age;
}
public void setWife(Woman wife) {
this.wife = wife;
}
}
class Test {
public static void main(String[] args) {
Woman w = new Woman();
w.setName("Han Meimei");
w.setAge(25);
System.out.println("My name is " + w.getName());
System.out.println("My age is " + w.getAge());
Man m = new Man();
m.setName("Li Lei");
m.setAge(26);
m.setWife(w);
w.setHusband(m);
System.out.println("My husband is " + w.getHusband().getName());
System.out.println();
System.out.println("My name is " + m.getName());
System.out.println("My age is " + m.getAge());
System.out.println("You don't know whether I have wife or not!");
}
}
运行结果:
分析: 因为Li Lei不想别人访问他的老婆,所以将wife封装起来,不提供getWife()这个方法。 (小朋友看到这里可能会笑)
public class J {
public static void printf(String str) {
System.out.println(str);
}
public static void cout(String str) {
System.out.println(str);
}
}
class JTest {
public static void main(String[] args) {
J.printf("Hello World!");
J.cout("Hello World!");
}
}
运行结果:
分析: 有些小朋友可能会觉得,C语言中的printf和C++中的cout,比java中的System.out.println要方便。所以这里咱们也封装出printf和cout,实现打印的目的。 (小朋友看到这里应该会很高兴)
当然,这只是举个例子罢了,真正编写Java代码,建议用Java默认提供的System.out.println。