定义:一个类继承另一个类的特性,被继承类称为父类,继承类称为子类。子类拥有父类所有的特征,并可以扩展。 实现:用extends关键字。
class Person { private String name; private int age; public String getName() {...} public void setName(String name) {...} public int getAge() {...} public void setAge(int age) {...} } class Student extends Person { // 不要重复name和age字段/方法, // 只需要定义新增score字段/方法: private int score; public int getScore() { … } public void setScore(int score) { … } }所有类都会继承某个类,所有类的祖先是Object,因此object类没有父类。 特点:一个类只有一个父类,但可以有多个子类。 注意:子类无法访问父类的private方法和属性。因此也不可以继承。 super关键字:表示父类。子类引用父类的字段时,可以用super.fieldName。
class Student extends Person { public String hello() { return "Hello, " + super.name; } }向上转型和向下转型:
向上转型: Student s = new Student(); Person p = s; // upcasting, ok Object o1 = p; // upcasting, ok Object o2 = s; // upcasting, ok 向下转型:instanceof判断一个变量所指向的实例是否是指定类型。 Object obj = "hello"; if (obj instanceof String) { String s = (String) obj; System.out.println(s.toUpperCase()); }覆写(Override):子类定义了一个与父类方法完全相同的方法,称为覆写。 覆写要求必须返回值和参数相同。 在方法前加上@Override,可以让编译器帮助检查是否进行正确的覆写。 多态:多态是指,针对某个类型的方法调用,其真正执行的方法取决于运行时期实际类型的方法。 Java的方法调用总是作用于运行期对象的实际类型,这种行为称为多态; 覆写和重载区别:覆写是在子类和父类间的,而重载是在同一个类中。覆写要求返回值和参数相同,而重载则相反,要求返回值和参数不能相同。 final关键字:
final修饰的方法可以阻止被覆写;final修饰的class可以阻止被继承;final修饰的field(属性)必须在创建对象时初始化,随后不可修改。Object类的三个方法:
toString()方法:将实例对象输出为Stringequals():判断两个实例对象是否相等。hashCode():计算一个实例对象的哈希值。多态的原则:例子: Student继承Person,两者中都有hello()Student类覆写了person的hello(),试问以下代码,调用了谁的方法。
Person p = new Student(); p.hello();调用了Student的方法,因为其创建的是Student的实例,p代表的是Student的实例。
概念:隐藏类的内部细节,提供外部访问的接口,不允许外部程序直接访问,而是通过该类提供的方法对隐藏的信息进行操作和访问,叫做封装。例:get和set方法。