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

简介: 面向对象的特征二:继承性

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

一、继承性的好处:

  • 1、减少代码的冗余,提高代码的复用性
  • 2、便于功能拓展
  • 3、为之后的多态性提供了前提

二、继承性的格式:class A extends B{}

  • A:子类、派生类、subclass
  • B:父类、超类、基类、superclass
  • extends:拓展
    2.1体现:一旦子类A继承了父类B以后,A获取了B中声明的所有的属性和方法。特别的:父类中声明为private的属性和方法:子类继承父类后,仍然认为获取父类中私有的结构。只因封装性的影响:使得子类不能直接调用父类的结构而已。

2.2子类继承父类以后,还可以声明自己特有的属性或方法,实现功能拓展

子类和父类的关系:不同于子集和集合的关系

三、Java中对继承的规定

  • 1、一个类可以被多个子类继承。
  • 2、Java中类的单继承性:一个类只能有一个父类。
    3、子父类是相对的概念。
  • 4、子类直接继承的父类:直接父类;间接继承的父类:间接父类;
  • 5.子类继承父类后,就获取了直接父类以及所有的间接父类中声明的属性和方法

四、另外

1.如果我们没有显示的声明一个类的父类的话,则此类继承于java.lang.Object类

2.所有的java类(除java.lang.Object类之外)都直接或间接继承于java.lang.Object类

3.意味着,所有的java类具有java.lang.Object类声明的功能

五、代码

在B站学习Java写的代码

代码如下

/*
 * 面向对象的特征之二:继承性
 * 
 * 一、继承性的好处:
 * 1、减少代码的冗余,提高代码的复用性
 * 2、便于功能拓展
 * 3、为之后的多态性提供了前提
 * 
 * 二、继承性的格式:class A extends B{}
 *  A:子类、派生类、subclass
 *  B:父类、超类、基类、superclass
 *  
 *  2.1体现:一旦子类A继承了父类B以后,A获取了B中声明的所有的属性和方法。
 *    特别的:父类中声明为private的属性和方法:子类继承父类后,仍然认为获取父类中私有的结构。
 *    只因封装性的影响:使得子类不能直接调用父类的结构而已。
 *  2.2子类继承父类以后,还可以声明自己特有的属性或方法,实现功能拓展
 *  子类和父类的关系:不同于子集和集合的关系
 *  extends:拓展
 *  
 *  三、Java中对继承的规定
 *    1、一个类可以被多个子类继承。
 *    2、Java中类的单继承性:一个类只能有一个父类。
 *    3、子父类是相对的概念。
 *    4、子类直接继承的父类:直接父类;间接继承的父类:间接父类;
 *    5.子类继承父类后,就获取了直接父类以及所有的间接父类中声明的属性和方法
 *  
 *  四、1.如果我们没有显示的声明一个类的父类的话,则此类继承于java.lang.Object类
 *    2.所有的java类(除java.lang.Object类之外)都直接或间接继承于java.lang.Object类
 *    3.意味着,所有的java类具有java.lang.Object类声明的功能
 */

ExtendTest类

package com.day0123_1;
public class ExtendTest {
  public static void main(String[] args) {
    Person p1=new Person();
//    p1.age=1;
    p1.eat();
    System.out.println("***************");
    Student s1= new Student();
    s1.eat();
//    s1.sleep();
    s1.name="Tom";
    s1.setAge(10);
    System.out.println(s1.getAge());
    s1.breath();
    Creature c =new Creature();
    System.out.println(c.toString());
  }
}

Creature类

package com.day0123_1;
public class Creature {
  public void breath() {
    System.out.println("呼吸");
  }
}

Person类

package com.day0123_1;
public class Person extends Creature {
  String name;
  private int age;
  public Person() {
  }
  public Person(String name,int age) {
    this.name=name;
    this.age=age;
  }
  public void eat() {
    System.out.println("吃饭");
    sleep();
  }
  private void sleep() {
    System.out.println("睡觉");
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
}

Student类

package com.day0123_1;
public class Student extends Person {
//  String name;
//  int age;
  String major;
  public Student() {
  }
  public Student(String name,int age,String major) {
    this.name=name;
//    this.age=age;
    setAge(age);
    this.major=major;
  }
//  public void eat() {
//    System.out.println("吃饭");
//    
//  }
//  
//  public void sleep() {
//    System.out.println("睡觉");
//  }
  public void study() {
    System.out.println("学习");
  }
  public void show() {
    System.out.println("name:"+name+"age:"+getAge());
  }
}
相关文章
|
8月前
|
存储 Cloud Native Linux
C++ 面向对象三大特征
C++ 面向对象三大特征
|
10月前
|
Java
面向对象编程的三大特征:封装;继承;多态
面向对象编程的三大特征:封装;继承;多态
48 0
|
24天前
|
Python 容器
面向对象详解,面向对象的三大特征:封装、继承、多态-2
面向对象详解,面向对象的三大特征:封装、继承、多态
|
24天前
|
Python
面向对象详解,面向对象的三大特征:封装、继承、多态-1
面向对象详解,面向对象的三大特征:封装、继承、多态
|
1月前
面向对象三大特征——封装,继承
面向对象三大特征——封装,继承
|
11月前
|
存储 Java
Java面向对象的特征一:封装性
Java面向对象的特征一:封装性
55 0
|
12月前
面向对象的三大特征(3)-多态
面向对象的三大特征(3)-多态
55 0
|
7月前
|
C++
C++ 面向对象特征4 多态(Polymorphism)
C++ 面向对象特征4 多态(Polymorphism)
31 0
|
11月前
|
Java
Java面向对象 特征二(继承性)详解
Java面向对象 特征二(继承性)详解
49 0
|
11月前
|
Java
面向对象特征三:多态性
面向对象特征三:多态性
44 0