java小白的学习之旅————2.1继承与抽象,接口二三事

上次讲到了抽象。

其实抽象这里还是很有说头的。

抽象类的子类必须实现抽象类里面的抽象方法。

很好理解嘛~~~~不是说过抽象方法必须在抽象类里面吗,如果子类不是抽象类,继承“抽象方法”肯定不行,所以要么你实现它,要么你变成抽象类。

继承里面还有个好玩的叫做上转型对象

说白了,就是父亲定义,儿子实例化

如下

class Fruit{
	int mass;
	
     void wayofeating(){
	 
     }
}
class Apple extends Fruit{
	Apple(int mass) {
		super(mass);
		}
	int mass;
	String name;
	void wayofeating(){
		System.out.print("削皮吃");
	}
    String colar;
}
public class H3 {
	public static void main (String[] args){
	Fruit b=new Fruit(23);
	Fruit c=new Apple(23);
    Apple d=new Apple(23);
	b.mass
	b.waysofeating();
	c.mass;
	c.waysofeating();
	d.color;
	}
}

定义了一个水果类,加一个苹果类。

苹果类继承水果类。

首先我们看到,如果父亲有构造方法,那么儿子的构造方法必须跟父亲一样。

super 超级的,就是指父亲,父类也叫超类。

super(mass);就是把mass参数传入父类之中,用父类的方法构造、

this 就是专门指这个子类。

其次,我们看到,bcd三者比较来看,b里面只能找到一个mass一个wayofeating,c也只能找到这么多,而d无疑是可以找到苹果里面的所以变量跟方法的。

但是bc又有不同,程序运行,b.wayofeating 啥也没有,而c.wayofeating 给出了吃的具体方法,那就是削皮……

所以,所谓的上转型很简单嘛,就是父亲叫你干什么,怎么去干,那不是你自己的事情吗?

这就是父亲定义,儿子实例化!

你说空气钱包还不够抽象?必须啥也没有是吧!

行!直接给一个钱包的定义!

“只有能装钱的东西叫做钱包”,但是怎么装?用什么材质?一概不说。

这种真.啥也没有的抽象类,就叫做接口

interface

我们可以这样。

interface wallet{
    void wayofopening();
}

接口,大家顾名思义,是不是想到了USB接口?

你的USB接口是深深的埋在计算机内部还是public(后面会细细分析)公开的?

自然是公开的。

那么,是可以随意改变接口参数final(后面也会提到)的还是不能改变的?

当然是不能随意改变的。

我用这个接口干什么(比如传数据或者给手机充电啦)是个人的事情,但是确实不能更改其中的参数(接口大小,接口的与插头的接触面积)。

当然,接口的继承不能叫继承了,叫implement,名词工具,动词贯彻实行。

子类 implement了接口之后,其中的抽象方法也是必须实现的,并且要public!!

java里面其实是去除了多继承的概念的,就是一个子类不能有多个父类。

但是可以有多个接口

你可以这么理解,父类里面有各种不同的成员方法跟变量,要是两个父类都拥有相同的某个变量或者方法,在继承的时候,计算机是不是还得纠结子类到底要用谁的变量跟方法(这里指子类没有进行方法重写)。

你先天性的知道都一样,用哪个都无所谓,可是计算机“笨”得很,觉得来自两个地方是不一样的两个东西,但是明明觉得又一样,他就开始矛盾了。

所以,假如要多继承,你是不是还得帮助计算机“排忧解难”?规范一下各个父亲变量或者方法,让他们不冲突?

这么一想,++!

到底是我服务你还是你服务我?

java是为了追求更简单高效的一门语言,面想对象贴近生活,可不是面向过程。

所以,这里就不用多继承了。

那多接口又是怎么回事?

嘿嘿!都说了这都是接口里面只有抽象方法,你不管哪个继承了不都得在子类(另外,接口的子类有个专门名词叫做实现类)里重写?不还都是得用我子类自己写的方法?

所以嘛,先扒拉下来,然后自己在把两边打服气!这波请问子类在第几层?

那又有人问,那我搞个抽象类作为子类,也不具体实现方法,那计算机还不是会迷糊?到底选哪个继承?为啥到了接口就又可以了?

我想,那你能保证父类里面没一个相同的成员变量?变量总不能重写吧?而接口可以!大家注意,接口里面的变量其实都是默认加了public static final的常量!要么完完全全相同,要么就是两个完全不同的东西,那继承了,又有什么关系呢。

这就是我大概的思维构想了。

另外,其实实现多继承的方法很多,我现在好多也不会。

类比是为了说明不是为了说理,因为这个道理本来就是对的,所以我类比一下就可以更好理解,无非就是构建一个属于自己的模型,有些地方可能有错,大家看到就指出一下,我也好修改。

还有,独属于接口的上转型对象,就叫做接口回调

好了,今天就讲这么多了,改日再见,See you ~~~

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值