超萌新级的Java学习心得——类与对象(二)

      最近学习了继承和多态的有关知识,先说一些废话,继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和方法,并能扩展新的能力。Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。

      什么意思呢(标准格式),简要的分析一下,“从已有类中派生”,意思是,继承是两个类的一种关系,不是一个对象,是一种关系,和字面意思一样,两个类分别为子类(派生类)和父类(或者说基类,超类),子类一旦继承了父类,会拥有父类的属性和方法。一个类只能继承一个类!就像你只有一个父亲一样!但是一个类可以被多个类继承。

      不过,仔细想想,继承存在的意义是什么?为什么不用两个类完成?比方说我有个类是Person,里面就两个属性姓名,性别,我再整个Worker类去继承Person,再整个Student类继承Person,然后每个子类独特的属性分别为职称、年级……听不下去了,赶紧写两个类交差吧。但是一般是不会遇到这么简单的任务的,比方说:

     

      我来简要说明一下,上述的是属于角色的三种职阶,至少有七个以上,一个角色有着一堆的基本属性:姓名,筋力,魔力,耐久,幸运,敏捷……然后,每一个职阶又有特殊的职阶技能,例如Saber是“对魔力”和“骑乘”等,然后,每一个属性有不同等级……如果不使用继承,我们是不是每设定一个职阶就需要写一个类,然后把至少6个属性每个都写个一遍?我无法想象这惊人的代码量。

     

      类之间的关系十分不明确,代码量十分大。

      但是,如果我使用了继承,先设定一个Servant总类,包含下列属性:姓名,筋力,魔力,耐久,幸运,敏捷……,然后,分别设定Saber,Assassin,Berserker等类来继承Servant类,各自保留一些特殊的职阶技能……代码量瞬间减少,而且关系还特别清晰。

      类的关系较明确,代码量有所减小。

 

      继承的基本结构    

  修饰符 class 类名 extends 父类{
    
    内容
    //属性
    //方法
}

      既然继承这么好用,问题来了,继承到底是一波什么操作?所谓拥有了父类的属性方法,那是不是可以直接调用父类的私有域的属性?我们可以尝试一下:

答案是不行,但是子类不是拥有父类的属性吗?我们这么想,父类继承的私有类相当于你父亲给了你一个带锁的箱子,需要父亲的钥匙(访问器修改器)才可以打开。

此外,通过上面的代码,可以看到还有一种东西——构造方法。这个东西作用是和名字差不多的,用于构造这个类的一个对象。构造方法和一般的方法区别是不能被直接继承,但是,可以用super()方法,参数与父类相同便可以达到继承的效果,具体可以看例子。

举个例子:我们来做一个Person类,同时记录Student和Employee两种人的信息

      

 

代码如下:

  

      心得体会:继承是十分重要的一种手段,可以使类与类之间关系更加清晰,这些相对基础,必须不断尝试训练,这会使之后的学习更加轻松。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值