Java的面向对象

06-继承

2021-07-01 310 2

简介 继承的初步理解

1. 继承 inheritance

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

    一、继承性的好处:

    ① 减少了代码的冗余,提高了代码的复用性 (提高可维护性)

    ② 便于功能的扩展(提高可扩展性)

    ③ 为之后多态性的使用,提供了前提

    

    二、继承性的格式:

       class ClassAaa extends ClassBbb{}

    ClassAaa:子类、派生类、subclass

    ClassBbb:父类、超类、基类、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类声明的功能

upfile


upfile



以下代码的继承树



upfile

//Creature.java
package com.ylaihui.oop2;

public class Creature {
    	public void breath(){
    		System.out.println("breath...");
    	}
}
//Personp.java
package com.ylaihui.oop2;

public class Personp extends Creature {
	String name;
	private int age;
	
	Personp(){}
	
	public void setName(String name){
		this.name = name;
	}
	public void setAge(int age){
		this.age = age;
	}
	public String getName(){
		return this.name;
	}
	public int getAge(){
		return this.age;
	}
	public void eat(){
		System.out.println("person eat...");
	}
}
//Teacher.java
package com.ylaihui.oop2;

public class Teacher extends Personp {
    	String major;
    	
    	Teacher(){}
    	public void show(){
    		System.out.println(major);
	}
}
//PersonpTest.java
package com.ylaihui.oop2;

public class PersonpTest {
    	public static void main(String[] args) {
    		Teacher t = new Teacher();
    		//t.age = 40;  // private age : The field Personp.age is not visible
    		t.setAge(40);
    		System.out.println(t.getAge());
		
		t.eat();
		t.name = "John";
		System.out.println(t.getName());
		
		t.show();
		// 继承间接父类的方法
		t.breath();
	}
}


点赞 2

文章评论

欢迎您:

纸上得来终觉浅,绝知此事要躬行!

112 文章 36783 浏览 3 评论

联系我

  •   QQ:    361352119
  •  Email:  lisimmy@sina.com
  • 微信: