首页 > 编程知识 正文

如何实现继承java,java中方法重载

时间:2023-05-05 01:14:14 阅读:154069 作者:3575

Java继承

1 .继承是什么呢?

像人类的继承(继承先辈、先辈的东西)一样,在Java中通过扩展已知的类,使该已知的类继承到新的类中,可以使该新类具有已知类的属性和行为。

新的此类称为子类或派生类,已知类称为父类或基类、超类。

2 .为什么要使用继承?

将类用作父类可以重用代码,这样子类就不需要编写父类的现有属性和行为

3 .那么,如何在Java中实现继承呢?

)首先,判断这些类是否有继承关系——'is a '?

什么是“is a”关系呢?

简单来说,就是两个以上的类中是否存在父类和子类,平时比较的时候经常把is a说成一个。

)2)判断哪些属性和行为在子类和父类中重复,并且是可复用的——'has a '?

“has a”关系是什么?

这个可以很容易地思考和观察。 如果如何发现子类和父类中存在重复的属性或行为,则该属性或行为与该类存在“has a”关系,并且“has a”关系的所有属性和行为都应该只写在父类中。

(3)创建父级

创建父类时,与以前创建常规类时相同。 重要的是,必须在父类中描述“has a”关系的属性或行为。

(4)创建子类

创建子类时和以前一样,但重要的是增加一个extends关键字

要创建子类继承,必须写publicclasssalaryextendsemployee

)5)如何写子类的内容

如果子类中有父类中没有的属性或动作,直接添加到子类中即可

对于子类,如果需要更改父类原有行为——的实现方式不同,则需要重写方法来完成不同的实现操作

重写方法

重写的方法是什么呢?

正如我之前提到的,如果需要在父类和子类之间实现不同的行为,则需要重写。

重写的好处——为什么有重写为Java的方法呢?

可以通过按照自己的意愿更改父类的方法来实现。

一般来说,我们在继承和改写中说它们的好处

优点:继承重用类中的代码,重写允许子类基于继承重新实现父类的现有方法。

重写几个注意事项:

重写父类行为时,子类方法的返回类型、方法名称、格式参数列表必须与父类匹配,只要方法名称相同,参数列表不同就会导致方法过载。

访问修饰符的访问级别不能小于父类。 在下一章说明。

子类不能比父类抛出更多的异常(下一册将讨论) ) ) )。

3 .那么,如何在Java中实现继承呢?

(6)子对象的实例化

如何实例化子对象?

和平时实例化对象一样。

注意:子类可以调用父类中的方法和属性,但父类不能调用子类中自己的属性或行为。

在内存中创建对象时,发生了什么?

首先创建了父类

再创建一个子类

创建子类的过程实际上是在父类中添加了子类

顺便说一下:

Java是单一继承语言。 这意味着一个父类可以有许多子类,一个子类最多只能有一个父类

除了单一继承语言外,还有很多继承语言,如C,继承关系相当混乱

根据父类的内容,确定是否可以调用某些方法

注意: Java中的所有类都有一个父类(根类) ——object类

object可以是类的直接父类或间接父类,重要的是该类是否继承了其他类

在Java中,object是所有类的父类,因此所有类都可以调用object类的方法

公共文件类获取类(;

公共int hashcode (;

PublicBooleanequals(Objectx );

保护对象克隆() throwsclonenotsupportedexception;

公共字符串状态(;

受保护的void finalize () throws Throwable;

publicfinalvoidwait (throwsinterruptedexception;

public final void notify (;

注意: Java object提供了一种将引用转换为字符串打印的常用方法: toString ()。 如果直接打印引用而不调用此方法,Java将自动调用方法来打印地址。

除了object的toString (方法之外,还经常使用equals )方法来确定两个值是否相等以及==的用处是否不同

用于在返回true之前检测两个引用是否指向同一对象

equals ) )仅通过匹配值返回true,并根据需要

要更改则重写equals()方法

在重写equals()方法时会自动添加一个hashCode()方法,该方法是计算equals()中比较值的哈希码(了解),若两个对象是相等的,则哈希码相同

如果把父类某个方法全部重写,只需要部分修改,那怎么书写呢?

这个时候我们需要使用super关键字,这个关键字和我们之前讲的this关键字很类似,只不过super关键字代码父类对象,而this代表的是本类对象。

在子类中也可以调用父类的构造器super(),如果在父类中没有无参的构造,这种情况下子类中super()不会通过编译。

如果我不想一个类被继承或者一个类中某个行为被继承,那怎么做到呢?

使用final关键字,之前学习中,使用final关键字构建的符号常量不能被更改

同理,在类或者方法中使用final关键字则该类或者改方法不能被更改——换言之则是不能被继承或者重写。

在实例化子类对象时其过程究竟是什么样子的?

注意事项:当一个子类被实例化时,父类会先被构造,父类构造器必须在子类的构造器执行前执行,若出现满意的凉面类,则从满意的凉面类构造→父类构造→子类构造。

在一个对象被实例化时,发生下列事件序列:

①new运算符调用子类的构造器。

②子类会用this关键字调用子类的其它构造器,最后在执行this之后的语句。

③在子类的构造器中的任何语句执行前,父类的构造器必须用super()关键字调用,如果没有显示的调用super(),则便与其会用super()调用无参数的父类构造器。

④如何父类也有父类,则先执行满意的凉面类,再依次执行。

⑤在执行过程中会执行到最高的父类object。

⑥object执行后依次往子类执行

⑦构造器也会随着执行过程依次执行

注意:如果要使用super()或者this(),则必须将其放在执行代码第一行

如果没有调用super()或者this(),则编译器会自动调用无参构造器。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。