java面向对象之继承

前言:
继承作为面向对象的又一大特性,当然是有必要要细学一下的。但是学习之前,扯点对象的初始化过程,将有助于理清创建对象时代码执行的顺序;其次,学习继承时,最重要的重写(override)当然是要稳稳的回顾一下;最后如果有精力,我当然是愿意吹一下,下午结尾时有点被绕晕的参数传递。

1. 对象的初始化过程

当我们在new对象的时候,看似简单的一句代码,其实jvm在执行的时候,并不是我们肉眼看到的那么简单。之前我们总是讲在new对象的时候,调用的是合适的构造方法,其实在调用构造方法之前,还有一段神逻辑是我们看不到的,其实我自己理解就是在创建对象之前因为要加载类。所以当我们用构造起构造对象时,先给对象的属性开辟空间,紧接着给其赋值;然后如果有静态代码块就执行了,如果没有就执行普通代码块;这些东东都执行完了之后,才到我们的构造方法。这只是对象出生时候的过程。世间万物都有生死(给自己的逼格99分,多一分怕自己骄傲)。即是如此,对象也有死的时候,只是java中,对象死的时候,不用我们开发者去理会,java的gc机制会自动回收该垃圾对象,当一个对象没有变量去引用的时候,那么该对象就成了一个没人管的野孩子了,即垃圾对象。必要情况下,是会被回收,从而释放出内存。

2. 继承之(what why where how)

注意:任意类都是object的直接子类或间接子类。
what :继承顾名思义,有没有一种“子承父业”的感觉。这里讲的类继承就类似于现实生活的儿子继遗传父亲的一些特性,但是这个儿子确并不是完全的像父亲,他可以有自己的一些特性。


why:当我们在开发程序的时候,总有一些类他们有一些相同的东西。这个时候,按照原来的方法,我们创建类时,每个类中都要写这些相同的东西,一个两个到无所谓,你说要是多了,那岂不是累死个人。这时继承就诞生了,当一些类有共同的属性和方法时,我们可以把这些共同的属性和方法放在一个类中,这个类叫父类,然后再让想要用这些属性和方法的类继承该类,此类叫做子类。这样对于java这样的团队开发来说,不仅仅方便了开发,而且还能缩短开发周期,节约开发成本.


where: 这个好像在上面那个why问题里面讲了。总之就是,当你想用一个类里面的属性和方法时,作为一个程序员不要在想着复制粘贴了,一点都不专业,好不好。就在此时,用一下继承,就是稳稳的可以用某个类的属性和方法了。


how:好像到重点了。继承时,首先你要保证有个父类。就像你想生孩子一样,你得保证有个男的才对。这个男的,就是以后这个孩子的父亲。吆,扯偏了,但是话操理不糙。
当有了这个父类之后,通过关键字extends就可以继承父类的有效的属性和方法,你就说简单不简单。我们只需要一个关键字,java内部就会自动帮我们继承这些属性和方法,你就不用总是写一些相同的属性和方法了,不仅解决了代码冗余,还让人看起来心情倍儿爽。

3. 继承之重写

有继承才会有重写。当父类的某些方法已经不能满足开发者的需求的时候,就需要重写该方法。
重写的时候就要注意了:

  1. 方法名必须和父类一致
  2. 参数列表也必须相同,是完完全全的相同
  3. 被final修饰的最终方法不能被重写
  4.子类的权限只能比父类大
  5. 静态方法不能被重写
  6. tostring()的重写:
      tostring是object的方法。默认返回的是对象的引用地址。但是实际开发中,会重写该方法,返回对象的一些属性。是不是肤浅了。总之 你可以把他写成你想要的样子。你想让他干什么,就可以让他干什么。

4 . final关键字

  1. 修饰变量: 表示该变量被初始化了之后就不能在赋值了。不管是基本类型变量还是引用类型的变量。总之,有了初始值,就不能在重新复制.
  2. 修饰方法 表示该方法是个最终方法,不能被重写。
  3. 修饰类 表示该类不能被继承。被称为最终类。string类就是个最终类。

5 . 参数的传递

1.基本数据类型:基本数据类型作为参数传递是传的是值。这是因为基本数据类型直接存在栈中。
2.普通引用数据类型:一般的引用数据类型传的是地址。
3.java怪胎引用类型string
    不管是通过=创建的存在字符串常量池中的,还是new出来存在堆中的,只要作为参数,传的都是值。本来我是不信,new出来的对象也传的是值,但是最后试了一下。好吧!我信了,的确也传的是值,这两种方法创建的对象在作为参数传的时候几乎是没有区别的,只是在内存中存储的位置不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值