目录
一、何为类的继承性?
继承一般是指晚辈从父辈那里继承财产,也可以说是子女拥有父母给予他们的东西。在面向对象程序设计中,继承的含义与此类似,所不同的是,这里继承的实体是类而非人。也就是说,继承是子类拥有父类的成员。多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中, 那么多个类无需再定义这些属性和行为,只要继承那个类即可。此处的多个类称为子类(派生类),单独的这个类称为父类(基类或超类)。可以理解为:“子类 is a 父类”
二、为什么要有类的继承性?
- 减少了代码的冗余,提高了代码的复用性
- 便于功能的扩展
- 为之后多态性的使用,提供了前提
图示:
三、继承性的格式
class A extends B{ }
说明:
- A:子类、派生类、subclass
- B:父类、超类、基类、superclass
public class Student extends Person {//Student继承Person
}
四、子类继承父类以后有哪些不同?
- 一旦子类A继承父类B以后,子类A中就获取了父类B中声明的所有的属性和方法。 特别的,父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私的结构。只因为封装性的影响,使得子类不能直接调用父类的结构而已。
- 子类继承父类以后,还可以声明自己特有的属性或方法:实现功能的拓展。
- 子类和父类的关系,不同于子集和集合的关系。
public class Person {
public String name;
private int age;
public Person(){
}
}
public class Student extends Person {//Student继承Person
//增加属性,实现类的功能扩展
private int grade;
public static void main(String [] args) {
Student s = new Student();
//name的权限修饰符为public,Student类中可直接调用name
s.name="Tom";
//age的权限修饰符private,因此在Student类中不能调用age,只能调用setAge()方法
s.setAge(24);
//grade的权限修饰符为private,main()方法在Student类中,可直接调用
s.grade=100;
System.out.println(s.name);//Tom
System.out.println(s.getAge());//24
System.out.println(s.grade);//100
}
}
五、Java中继承性的说明
- 一个类可以被多个子类继承。
- Java中类的单继承性:一个类只能有一个父类
- 子父类是相对的概念。
- 子类直接继承的父类,称为:直接父类。间接继承的父类称为:间接父类
- 子类继承父类以后,就获取了直接父类以及所间接父类中声明的属性和方法
图示:
六、java.lang.Object类的理解
- 如果我们没显式的声明一个类的父类的话,则此类继承于java.lang.Object类
- 所的java类(除java.lang.Object类之外都直接或间接的继承于java.lang.Object类
- 意味着,所的java类具有java.lang.Object类声明的功能。
public class Dog {
public static void main(String[] args) {
Dog d=new Dog();
//toString是Object类中的方法,因此可说明Dog类是间接继承于Object类的
d.toString();
}
}