java基础系列(五)

1.前言

        上一讲我们讲到,面向对象的三大特性,今天我们就来对这三大特性作简单介绍。

2.封装

        对于一个程序,我们通常会要求它的构成代码要满足高聚合,低耦合的前提,也就是我们同一种语句,或作用差不多的代码段是可以重复利用的。比如:

        如果,我们在多个地方都要重复以上三句话,是直接调用一个方法好呢?还是不停的重写这三句话,显然,当然是将这三句话装到一个方法更好了。

        在比如:       

        如果这是一个私密程序,我们肯定不希望别人,可以这样直接修改我们的预设定。

        但如果我们先给预设定上锁,在通过别的别的方法去给这个属性进行修改,无疑可以保证我们的安全性。更可以达到对某一属性进行修改的作用。

        所以,封装的概念便由此而生。我不想去讲一大长串令人头大的概念,简单的来说,封装就是一个减少代码重复性;隐藏代码防止被随机访问的概念。要想访问某一属性或方法,都必须经过封装层的检测。

3.继承

        在继承的开篇,我就要强调的一点是java的继承机制是单继承机制。牢记这个概念!

        什么是继承,说到继承,在现实中,什么人能够继承,一般来说便是父母与孩子的关系,是最常见的继承,一个孩子继承了父母的基因,所以他们长相相似,继承了父母的说话方式,眼界等一系列人际间的、生物间的关系。        

        而在java中也引入了这个概念,假如一个A类自由的调B类的方法和属性,我们就把B称作A的父类,A作为B的子类。有人会问,如果B也有父类C,那A可以继承C的方法和属性吗?答案是可以的,此时我们称C类为超类。

                

       可以看到,在B和C中都可以使用A中的hh方法,所以继承是存在的。在java中,继承符号位 extends, 写类名的后面,格式为 class 类名 extends 要继承的类名。

        但是继承也不是可以完美的继承的,子类对父类的继承,只能是继承父类公开的方法和属性,这里涉及到了修饰符的概念。

        修饰符

       这个很简单就不多讲了。

      子类不能继承父类私有的属性和方法。

         如图,当我们将hh的修饰符换成了私有后,bb并不可以调用这个方法了,也就是说,BB完全没有继承这个方法。

        接着,我们要讲一个和继承有关的关键字,super,super是子类用来调用父类中的方法和属性的媒介。比如:

        

         如果,我们想直接在类中使用父类的属性,我们就可以使用super关键字去调用。

         细节:

        在我们实例化一个子类时,子类必须调用父类的构造器,去完成父类的初始化。比如:

        

 

        所以,我们可以看到,子类的构造器在实例化一个对象时,是会使用super()方法去调用父类的无参构造器,如果父类有多个构造器,我们可以通过super(参数)去调用不同的父类构造器。并且当我们使用super(参数)时,super()必须放在构造器的第一行。还记得我们讲过的this吗,如果我们一个构造器中,希望去调用其他构造器,就用this(参数),但是this()也必须放在第一行,由此可见,this()和 super()是不能一起用的。注:this是关键字,this()是函数,super是关键字,super()是函数。

        有人会问了,如果我们在子类和父类都定义了同样的方法,同样属性,那么我们实例化调用的时候,是使用的父类的属性还是子类的属性呢?请看图解:  
         如果,我们在子类中定义了某个方法,该方法的名称、返回类型、参数都一样,我们就称子类的方法重写了父类的方法,这个概念和前面的重载是不是很像呢?重载是在类中的,重写是对于父类与子类的。

        

         如图,这种行为就叫做重写,@Override是重写标志,当然我们可以不在里面去调用父类的方法也可以自己写。

         

        当然,实例化后,调用的顺序和属性是一样的,从子类开始寻找。

5.结语

        今天的内容到这来就结束了,明天我们来讲解三大特性中的最后一个,多态! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值