五(七)、继承性

面向对象的特征之二:继承

一、继承性:
  1.减少代码的冗余,提高代码复用
  2.便于拓展功能
  3.为多态性使用提供了前提
 
二继承性的体现 : class A extends B{}
  A为子类 subclass,B为父类 superclass
  1.一旦子类A继承B以后,子类A 中获取了父类B中声明的结构:所有的 属性、方法 ;
  特别注意:父类的私有结构,子类也继承到了,只是由于封装性的影响使得子类不能直接调用父类结构;
 
  2.子类继承父类以后,还可以声明自己特有的属性 和 方法;实现功能的扩展;
  子类与父类的关系,子类功能丰富;
 
  三、java中继承性的规定:
  1.java中的单继承性;子类只能有一个父类;
  2.一个类可以被多个子类继承;
  3.字父类是相对的,可以多层继承;
  4.子类直接继承的父类,称为直接父类,间接继承的类称为 间接父类
  5.子类继承父类以后,就获取了直接父类和间接父类以及所有间接父类中声明的属性、方法
 
  四、若没有显示声明一个类的父类,则此类继承于java.lang.Object类
  所有的类(除java.lang.Object)都直接或间接继承于java.lang.Object,意味着,所有的java类都具有java.lang.Object声明的功能

如下例子:Students 继承Person1,那么Students获取了Person1中声明的所有的属性和方法;

 1 public class Day11Inherit20 {
 2 
 3     public static void main(String[] args) {
 4         Persons1 person = new Persons1();
 5         person.age = 1;
 6         person.eat();
 7         Students student = new Students();
 8         student.eat();
 9     }
10 }
11 class Persons1{
12     String name;
13     int age;
14     public void eat(){
15         System.out.println("睡觉");
16     }
17     public void sleep() {
18         System.out.println("睡觉");
19     }
20     public String getName() {
21         return name;
22     }
23     public void setName(String name) {
24         this.name = name;
25     }
26     public int getAge() {
27         return age;
28     }
29     public void setAge(int age) {
30         this.age = age;
31     }
32     public Persons1(String name, int age) {
33         super();
34         this.name = name;
35         this.age = age;
36     }
37     public Persons1() {
38         super();
39     }
40     
41 }
42 
43 class Students extends Persons1 {
44     String major;
45     public String getMajor() {
46         return major;
47     }
48     public void setMajor(String major) {
49         this.major = major;
50     }
51     public Students(String name, int age, String major) {
52         super();
53         this.name = name;
54         this.age = age;
55         this.major = major;
56     }
57     public Students() {
58         super();
59     }
60     
61     public void study() {
62         System.out.println("学习");
63     }
64 }
原文地址:https://www.cnblogs.com/lixiuming521125/p/13305719.html