您的位置:首页 > 编程语言 > Java开发

Java基础8(Javaoo3)——继承

2016-10-30 20:32 369 查看

Java基础8(Javaoo3)——继承

1.类与类之间的关系—— is a(继承)// 猫类是宠物类(是) 

  --has a(拥有)// 男人类拥有女朋友类(拥有) 

  --use a(用)//  警察类查车类(查的时候用一下)

  概念:把具有相同属性与行为的类进行抽取设计为父类,子类会自动具备来自于

父类的属性和行为(子类只需写自己特有的属性和行为,父类书写子类共有的属性

和行为)(子类通过继承父类可以提高代码的复用性,代码修改少,可多次调用)

  java是单继承类型!某些OOP语言(C++)允许子类有多个父类,但是在Java中这

是不允许的,在Java中一个类只能有一个父类!子类永远指向父类!子类→父类

  继承的优点:①代码的可重用性②父类的属性和方法可用于父类③设计应用程序

变得更加简单④子类可以扩展父类的属性和方法

2.extends:继承父类属性和行为的关键字    例:YearEmployee extends Emplo 

yee

3.Object是所有类的根类!所有类默认继承Object类!

4.方法的重写:不是一个类而是在继承关系中,子类把来自于父类的方法重新实现

一次.

  重写的要求:-方法名必须一致

             -参数列表必须一致

             -返回类型必须一致

             -访问修饰符必须大于等于父类方法的访问修饰符

             -重写方法不能抛出比父类被重写方法更多的异常

5.equals方法的重写 eqauls()-是用来判定两个对象在业务上是否相等

    使用场景:有时在业务上我们不需要将两个对象的所有属性进行对比,只需要

部分属性的对比,这时我们就需要对equals方法进行重写

    区别:引用数据类型中变量用“==”号不是比较对象中的内容是否相等,而是

比较两个对象变量是否指向同一个对象(区分equals)

6.toString方法的重写 toString()-返回对象的字符串描述

    使用场景:当我们对字符串进行直接操作时,比如:打印对象,字符串拼接时

根据业务需求,我们可以重写该方法

7.finalize(非关键字)  销毁对象的方法,由GC直接调用

8.final(可选修饰符,关键字)的作用:

   -final修饰变量时这个变量变成常量

   -final修饰方法时这个方法就不能被重写

   -final修饰类时这个类不能被继承(这种类被称为终态类,最终类)

9.内存实现:内存叠加的方式

10.构造方法不会被继承,因此构造方法也不会被重写.

 

 分析原因:①语法:父类的构造方法不可能继承到子类中,这样会与子类的构造

方法冲突.

           ②面向对象:子类不可能拥有一个产生父类的对象的方法,不合理!

11.父类构造方法不会被继承,但是会参与子类对象的构造!

    分析:我们在new子类时,先会调用父类构造方法产生父类对象部分,再调用

子类构造方法产生子类对象特有部分.然后叠加起来产一个子类对象(即:内存的

叠加)

12.super用法与this用法的对应学习:(要加以对比区分)

    ①this用法:1.this()的用法:调用本类的其他构造方法,并且只能写在构

造方法的第一句,this()是没有系统默认的,不写不会调用!

            2.this .****或this.***()的用法:this.指代当前对象,可以看到

本类定义的所有属性和方法,不受访问修饰符的限制,可以看到从父类继承的属性

和方法,但是会受到访问修饰符的限制(public可见,private不可见)

    ②super用法:1.super()的用法:调用父类的指定构造方法,只能写在构造方

法的第一句,super()是有系统默认的,就算不写,系统也会默认调用父类的无

参构造。(即:我们不写super()或者super(参数),系统也会自动默认我们有一个

super()来调用父类无参构造!)

             2.super.***或者super.***()的用法:访问不到本类定义的任何属

性和方法,可以看到继承于父类的属性和方法,但是受访问修饰符的限制.(代表每

个类中指向父类对象部分的引用)

    区分:通过上面的对比可以知道,this()和super()不会同时出现(两者

都要求写在构造方法的第一句),this.的功能比super.的功能强(本类访问this.

都能看到,super.不行,父类访问两者都受到访问修饰符的限制)

    特例:当我们需要调用一个被重写的方法在父类中的实现(即:调用方法重写

前的效果),这时我们要用super.,其它时候我们均用this.(调用方法重写后在本

类的实现)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: