1 package Objects;
2
3 /**
4 * @author LP
5 *
6 */
7 public class Cleanser {
8
9 private String m_string = new String("Cleanser");
10
11 void Append(String string){m_string += string; }
12
13 void Dilute(){Append("Dilute()"); }
14 void Apply(){Append("Apply()");}
15 void Scrub(){Append("Scrub()"); }
16 void Print(){System.out.println(m_string);}
17
18 /**
19 * @param args
20 */
21 public static void main(String[] args) {
22
23 Cleanser cleanser = new Cleanser();
24
25 cleanser.Dilute();
26 cleanser.Apply();
27 cleanser.Scrub();
28
29 cleanser.Print();
30 }
31
32 }
1 package Objects;
2
3 /**
4 * @author LP
5 *
6 */
7 public class Detergent extends Cleanser {//java的继承关键字是extends,只允许单继承
8
9 public void Scrub(){//重写父类的方法
10 Append("Detergent.Scrub()");
11 super.Scrub();//是用super调用父类的方法
12 }
13
14 public void Foam(){//子类添加新的方法
15 Append("Foam()");
16 }
17 /**
18 * @param args
19 */
20 /**
21 * @param args
22 */
23 public static void main(String[] args) {//父类和子类都可以有自己的main函数,便于单元测试
24
25 Detergent detergent = new Detergent();
26
27 detergent.Dilute();
28 detergent.Apply();
29 detergent.Scrub();
30 detergent.Foam();
31 detergent.Print();
32
33 System.out.println("Test base class:");
34 Cleanser.main(args);//main函数可以被直接调用
35 }
36 }
37
38 //说明:倘若类的成员省略了访问权限标识,则成员默认为friendly访问权限,这样一来,就只允许对包成员进行访问,即:
39 //任何人都可以访问那些没有访问权限标识的方法,但是如果来自别的包的类继承了该包中的Cleaner类,它就只能访问那些公开的成员