面向对象的特征之二:继承
一、继承性:
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 }