a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 112|回复: 0

[基础知识] JAVA面向对象编程课堂笔记4

[复制链接]
发表于 2012-8-4 12:37:27 | 显示全部楼层 |阅读模式
面向对象方法的重载(overloading)和覆盖(overriding)。
( C% |/ e  O+ W7 c% M; A2 \在有些JAVA书籍中将overriding称为重载,overloading称为过载。
1 r! u7 ]" c" F5 }" Y- }) i* M0 qOverloading在一个类中可以定义多个同名方法,各个方法的参数表一定不同。但修饰词可能相同,返回值也可能相同。
+ u' J1 R0 ^: M2 X# @! E在程序的编译过程中根据变量类型来找相应的方法。因此也有人认为 overloading是编译时的多态,以后我们还会学到运行时多态。% k. b( R% R, y" F5 F2 }
为什么会存在overloading技术呢?作为应对方法的细节。$ `3 ]( S& {) R# |. n/ Z3 F/ I. s
利用类型的差异来影响对方法的调用。
1 ~8 c# L7 S# }" Z1 C6 |8 Z吃()可以分为吃肉,吃菜,吃药,在一个类中可以定义多个吃方法。4 v7 a5 [  g8 B& H/ w
构造方法也可以实现overloading。例:
& A# M% e0 Q  b, y! z5 R  cpublic  void  teach(){};
# o7 [7 }- @: I+ {& Wpublic  void  teach(int a){};8 C' M0 B, Q# H% M* a
public  void  teach(String a){}为三种不同的方法。
$ c  ^  u! k$ }  H- v! a( qOverloading方法是从低向高转。
7 H4 u+ K! f8 JByte—short—float—int—long—double。" a: w* v# r: b6 S
在构造方法中,this表示本类的其他构造方法:# U$ [3 h# }, O3 g
student(){};
! y, R  P3 q9 N6 r! pstudent(string n){% P% v% W4 q6 _; g: z9 w
  this();//表示调用student(), k. x8 f' S) T' j$ d
}7 b4 Y: {! [7 i6 }2 c  M' q3 D: V9 w- Q2 ?
如果调用student(int a)则为this(int a)。
3 S; W  q+ o. h" V: F特别注意:用this调用其他构造方法时,this必须为第一条语句,然后才是其他语句。* D! y5 W$ l. U2 w" ]* Q4 N
This表示当前对象。
0 Y  t7 e! X/ [/ Y; v, oPublic  void  printNum(){! h' [, r# ~' u& ~. B+ T
  Int number=40;1 r3 E3 g% v4 ]0 k
  System.out.println(this.number);
; F0 d6 d2 s' I}* p2 n( _' f! v, h9 p- [# \
此时打印的是实例变量,而非局部变量,即定义在类中而非方法中的变量。: g! s6 }6 {8 [' `( u1 @0 W, {6 }
This.number表示实例变量。
- e) X* d* e7 I: g/ G谁调用this.number那么谁即为当前(this)对象的number方法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-8 08:33 , Processed in 0.229303 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表