java入门基础--方法的多样性(继承与覆盖)

方法的多样性

1. 类只是一个模具而已,不能当作对象在程序中直接拿来用。由类来创建相应的对象:new

 

2. 构造方法

2.1构造方法与普通方法的区别

(1)构造方法不能有返回值;

(2)构造方法的名字与类名完全相同;

(3)构造方法只能在创建对象时由java自动调用;

(4)构造方法用于给类的属性赋初值,或者创建对象中的其它内容

 

2.2构造方法的重载

构造方法可以定义多个,只有它们的参数的类型或者参数的个数不同。在创建对象调用构造方法时,JAVA会根据构造方法的参数自动选取调用哪个方法。

 

2.3默认的构造方法

默认的构造方法只能在类定义当中没有出现构造方法时才会起作用,它不接受任何参数,也不做任何事情,只是为了避免一个定义好的类因为没有构造方法而通不过编译。

 

2.4 构造方法的权限

一般设为public

 

2.5 构造方法中调用其它的构造方法

调用同一类中的其它构造方法: this

调用父类的构造方法:super

注意~this,super 调用其它的构造方法这行代码必须出现在构造方法的第一行,否则就会遇到编译错误。

 

子类的构造方法当中会隐含的构造父类的构造方法,来完成子类创建过程中的构造原父类中的部分内容,默认的情况下只是调用父类的无参数构造方法,通过super可以显示的调用父类的构造方法。

 

3. 继承

关键字:extends

3.1 权限属性:

Super class           sub class

Default       =>      default

protected    =>       protected   

public        =>       public

private       =>       N.A(不能访问)

私有类型实际上也可以被子类继承,但不能被子类直接访问,只能通过父类的公共接口来访问。

3.2 JAVA中几乎所有的类都继承自Object类

在java中新定义类时,如果不指名继承的父类,则自动继承Object类,这种机制保证了java中所有的对象都有一个公共的接口,如toString(), equals(), getClass

3.3 final类不能被继承

在定义类时,前面加了final关键字,则这个类就成了Java的类继承数上的叶结点,不能再由这个类派生出其它的类了,比如String, Math 类就定义成final.

 

4. 方法的重载与覆盖

4.1覆盖的注意点:

(1)仅当父类方法是可访问的权限是才会出现被覆盖的情况,即子类能够直接继承得到的方法才能被覆盖,父类的私有方法(private)不能被覆盖!

(2)父类定义的final修饰的方法,不能在子类中被覆盖掉。

(3)父类中定义的static 静态方法能够被子类继承,但不能被覆盖,如果在子类中重新定义父类的静态方法,实际上父类的静态方法被隐藏,类似于局部变量会在它的作用域内隐藏全局变量。

4.2 重载是为了有统一的方法名称接口,java处理方法时,会根据方法的名称和它的参数信息生成一个方法签名,方法名称是相同的,但是方法签名是唯一的。方法签名由参数的类型和参数的个数决定。

4.3 重载与覆盖的区别

重载                            覆盖

方法名称        相同                            相同

归属类          在同一个类的定义中              分别在父类和子类的定义中  

参数列表        参数的类型或者参数的个数不同    可以相同,也可以不同

返回值          可以不同                        必须相同

访问权限        不限                            父类中定义的方法不为private修饰

方法状态        不限                            父类中定义方法不能为static修饰

 

5. 对象的类型转换

有继承关系的对象之间才能进行转换。

自动转换: 对象向着它的父类方向转换是“安全”的,这是java的默认对象转换方向

强制转换: 对象向着它的子类转换,需要手动指定。

 

6. 多态

应用场合:将参数定义成父类,然后在方法中进行必要的类型转换

父类作为参数,它的所有子类都可以用作这个方法的实参,然后在方法中进行调用。不仅保证了接口方法的一致性,而且还可以调用到子类中覆盖的方法。

Java中搜索方法的顺序--- 它总是从子类的方向向父类的方向搜索的。

 

这里需要用到“判断对象是不是属于某个类”,即判断对象是否为某个类,或者为它的子类。

instanceof 关键字

 对象名instanceof 类型名

==》一个对象不仅属于它创建它的那个类,也属于它的所有父类

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值