a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 101|回复: 0

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

[复制链接]
发表于 2012-8-4 12:37:27 | 显示全部楼层 |阅读模式
方法的覆盖(overriding)% }- e! i) x! R; C% A
方法的重载并不一定是在一个类中:子类可以从父类继承一个方法,也可以定义一个同名异参的方法,也称为overloading。) |! D% l# U( P5 o
当子类从父类继承一个无参方法,而又定义了一个同样的无参方法,则子类新写的方法覆盖父类的方法,称为覆盖。(注意返回值类型也必须相同,否则编译出错。)
7 K1 V: G. K4 u& k如果方法不同,则成重载。- L, R* a7 c$ q' }& W8 ?
对于方法的修饰词,子类方法要比父类的方法范围更加的宽泛。
1 _. V$ z, z# {; }父类为public,那么子类为private则出现错误。5 i; e3 a0 s) I& @8 E# }' s7 a
之所以构造方法先运行父类再运行子类是因为构造方法是无法覆盖的。
3 [7 `, d! l- d$ }0 D9 W; M5 ]以下范围依次由严到宽:
" p6 |. }2 r7 k$ \5 h& p9 C& Fprivate :本类访问;
' {- _- [! X$ R& i# Gdefault :表示默认,不仅本类访问,而且是同包可见。8 f- X/ x6 m* ~, c1 h# `( _
Protected:同包可见+不同包的子类可见
# m# j' M) @9 N- z. WPublic :表示所有的地方均可见。
, F( a& G6 J8 b) v; F  X当构造一个对象的时候,系统先构造父类对象,再构造子类对象。
% @, x' Q, E. F$ A7 d0 @* _构造一个对象的顺序:(注意:构造父类对象的时候也是这几步)3 o, z, M/ B1 w9 u# H$ O) Y
①    递归地构造父类对象;) V/ A3 g$ Z9 g6 R* x% N$ R
②    顺序地调用本类成员属性赋初值语句;" B/ q* s8 T. O8 X" M
③    本类的构造方法。; S$ z9 q, N6 G$ c4 u" H! s
Super()表示调用父类的构造方法。
, L- Z4 m, p+ S- t' K% F1 iSuper()也和this一样必须放在第一行。# q9 N7 S1 |- `* @" A
This()用于调用本类的构造方法。
/ _0 Z+ @; j3 w" y如果没有定义构造方法,那么就会调用父类的无参构造方法,即super()。' c. {3 j+ j% q
要养成良好的编程习惯:就是要加上默认的父类无参的构造方法。
- @. Z8 ^' l4 ~9 F4 M思考:可是如果我们没有定义无参的构造方法,而在程序中构造了有参的构造方法,那么如果方法中没有参数,那么系统还会调用有参的构造方法么?应该不会。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 17:13 , Processed in 0.362554 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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