Java中继承的目的

LZ第一次写博文,语言组织不好,请大牛勿喷。

         关于JAVA的继承相信很多人都知道,这是面相对象三大基本基本特征(封装,继承,多态)之一,当时LZ学到继承的时候就发现一个问题我们什么时候该用继承,

(有人开始解释:继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为“子类”或“派生类”被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。)

当LZ听到这样的解释就想一口盐汽水喷死你(不解释)。当我们要写一个项目的时候如果我要创建一个Dog类(很多老师喜欢那狗来举例子,那我也顺便用一下,狗狗要听话,回来带你去吃狗肉火锅,嘿嘿)在main放法中我要调用该Dog类中叫的方法命名为say
()(由于LZ的词汇量有限就只想到这个单词)

代码如下:

 

public class AnimalDemo {
	public static void main(String[] args) {
		Dog d = new Dog();
		d.say();
	}
}

class Dog {
	public void say() {
		System.out.println("dog: 汪汪...");
	}
}

 

当时LZ就想为什么不给他加一个父类Animal呢,然后让Dog类继承Animal类,当时学JAVA这个问题很久就比如接口我怎么感觉没什么用呢,他又不能实现方法,只能定义一些静态变量。现在我们还要一个Cat类,里面也有一个Say方法,我们也在main方法中通过一个AnimalSay()方法调用他们say()方法,

代码如下:

public class AnimalDemo {
	public static void main(String[] args) {
		Dog d = new Dog();
		Cat c = new Cat();
		animalSay(d);
		animalSay(c);
	}
	public static void animalSay(Object o) {	// 注意形参为Object
		if(o instanceof Dog) {		// 判断是对象o是否为Dog的实例
			Dog d = (Dog)o;
			d.say();
		}
		if(o instanceof Cat) {
			Cat c = (Cat)o;
			c.say();
		}
	}
}

class Dog {
	public void say() {
		System.out.println("dog: 汪汪...");
	}
}

class Cat {
	public void say() {
		System.out.println("cat: 喵喵...");
	}
}

这是有人会说这不就是静态多态,当然我不是为了说明什么是静态多态来写这文章的,

现在让我们看看如果我们加一个Animal虚类,让CatDog类来继承Animal类在将animalSay()方法修改一下看看是怎么样的。

代码如下:

public class AnimalDemo {
	public static void main(String[] args) {
		Dog d = new Dog();
		Cat c = new Cat();
		animalSay(d);
		animalSay(c);
	}
	public static void animalSay(Animal o) {	// 注意形参变成了Animal
			o.say();
	}
}
abstract class Animal {
		public abstract void say();
}
class Dog extends Animal {
	public void say() {
		System.out.println("dog: 汪汪...");
	}
}

class Cat extends Animal {
	public void say() {
		System.out.println("cat: 喵喵...");
	}
}

又有人说这是动态多态嘛,现在我们发animalSay()方法中就变得简洁多了,而且不管我们创建什么类猪啊,鸟啊,人啊,只要从Animal继承,就只要调用animalSay()方法就行了,多省事啊,(完全符合程序员懒惰的性格)这就是用多态的好处代码重用。

         总结:继承(不管是继承类还是实现接口)的目的是实现多态,而多态的目的是代码重用。




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值