Java——三大特性之一:继承

概念:

继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

上面这张图就可以反映出我们生活中的继承,简单的来说:

兔子和羊都属于食草类动物,狮子和豹都属于食肉类动物。

食草类动物和食肉类动物又同属于动物类。

所以继承需要符合的关系是:is-a,父类更通用,子类更具体。

虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性,同时也会具有一些自身的特性。

总的来说,继承可以使代码的复用变的十分简单,我可以定义一个子类,拥有父类的所有属性和方法。同时,子类也可以重新定义方法,追加属性和方法,可以很大程度的减少工作量。

继承的特性有以下几点:

①子类拥有父类非 private 的属性、方法。

②子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。

③子类可以用自己的方式实现父类的方法。

④Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类。

⑤提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

下面,这张图体现了Java中的继承类型👇👇👇

继承的关键字: 

继承可以使用 extends 和 implements 这两个关键字来实现继承,而且所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在 java.lang 包中,所以不需要 import)祖先类。 

extends关键字:在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以说 extends 只能继承一个类。

implements关键字:使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。

①super关键字:代表的是父类空间的引用。this关键字:代表的是所属函数的调用者对象。

②super关键字:必须要有继承关系才能使用。this关键字:不需要存在继承关系也可以使用。

③super关键字:调用父类的构造函数。this关键字:调用本类的构造函数。

在这里,我们先举一个简单的例子吧!!!👇👇👇

import java.util.*;
class Animals {//定义父类Animals
	public void getEat() {//定义一个公共方法
		System.out.println("很多动物正在吃饭!");
	}
}
class Dog extends Animals {//定义子类Dog,继承了父类Animals
	public void getEat() {
		System.out.println("它是狗,正在吃骨头!");
	}
	public void getEating() {
		this.getEat();//调用本类的方法getEat()
		super.getEat();//调用父类的方法getEat()
	}
}
class Cat extends Animals {//这个与子类Dog是完全一样的
	public void getEat() {
		System.out.println("它是猫,正在喝牛奶!");
	}
	public void getEating() {
		this.getEat();
		super.getEat();
	}
}
public class Forever {
	public static void main(String[] args){
		Animals a=new Animals();
		a.getEat();
		Dog b=new Dog();
		b.getEating();
		Cat c=new Cat();
		c.getEating();
	}
}

运行结果如下: 

下面,我们再来看一个例子吧!!!👇👇👇

①现有一个父类Father

public class Father {
	private String name;
	private String action;
	public Father(String name,String action) {
		this.name=name;
		this.action=action;
	}
	public void getEat() {
		System.out.println("动物:"+this.name);
	}
	public void getAction() {
		System.out.println("爱好:"+this.action);
	}
	public void animal() {
		System.out.println("动物真有趣!");
	}
}

②两个子类Son1和Son2 

public class Son1 extends Father {
	public Son1(String name,String action) {
		super(name,action);
	}
}
public class Son2 extends Father {
	public Son2(String name,String action) {
		super(name,action);
	}
}

③最后通过Java运行程序的入口main方法里的具体操作来实现继承

import java.util.*;
public class First {
	public static void main(String[] args) {
		Father a=new Father("猪","吃喝睡");
		Son1 b=new Son1("狗","吃骨头!");
		Son2 c=new Son2("猫","抓老鼠!");
		b.getEat();
		b.getAction();
		c.getEat();
		c.getAction();
		a.getEat();
		a.getAction();
		a.animal();
	}
}

运行结果如下: 

那么,以上就是博主对于Java三大特性之一——继承的理解,如有错误,或是理解不周的地方,还望大佬指出!!!

在此,感谢大家的支持,感谢感谢!!!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章