继承
所谓封装,就是将对象的成员变量和成员函数包装和隐藏起来,对外界通过特定的接口来访问。
public class User { private String name; public User (String name) { this.name = name; } public String getName () { return this.name; } public void sayName () { System.out.println(this.getName()); } public void sayHello () { System.out.println("User Hello"); } public static void main (String[] args) { User user = new User("人"); user.sayName(); // 公开方法 => 人 user.sayHello(); // 公开方法 => User Hello } }
继承
继承是代码复用的有效手段。
public class Female extends User { public Female (String name) { super(name); } public void sayHello () { System.out.println("Female Hello"); } public static void main (String[] args) { Female female = new Female("女人"); female.sayName(); // 继承了 User 的方法和属性 => 女人 female.sayHello(); // 覆盖了 User 的方法 => Female Hello } }
多态
多态性是指一个方法可以有多个实现的版本。对于一个方法的多种实现,程序运行时,系统会根据方法的参数或调用方法的对象自动选择一个合适的方法执行,不会产生混乱。主要包括方法重载,方法覆盖和动态绑定。
public class Male extends User { public Male (String name) { super(name); } // 这是方法覆盖,不会调用 User 中的 sayName 了 public void sayName () { System.out.println("Male :" + super.getName()); } // 这是方法重载,因为参数不同于上一个方法 public void sayName (String hehe) { System.out.println("Male :" + super.getName() + " " + hehe); } public void sayHello () { System.out.println("Male Hello"); } // 多态测试 public static void main (String[] args) { Male male = new Male("男人"); male.sayName(); // 方法覆盖 => Male: 男人 male.sayName("呵呵"); // 方法重载 => Male: 男人 呵呵 User m = new Male("男人"); m.sayHello(); // 动态绑定 => Male Hello User f = new Female("女人"); f.sayHello(); // 动态绑定 => Female Hello } }