a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 101|回复: 0

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

[复制链接]
发表于 2012-8-4 12:37:27 | 显示全部楼层 |阅读模式
封装类:
. o) a! B7 i" L6 y' FJAVA为每一个简单数据类型提供了一个封装类,使每个简单数据类型可以被Object来装载。
; i( ~4 y+ d, X7 g) ^' t8 L除了int和char,其余类型首字母大写即成封装类。 : D2 w* W6 z, F/ r6 K
转换字符的方式: 8 ?8 W. b4 t3 ?
int I=10;
% T: _4 k4 ]6 {. `! v2 u9 PString s=I+” ”;
5 m) }3 |$ b9 T3 z% U0 d. hString s1=String.valueOf(i); 6 F, k; [* [- u
  
4 B% u1 Z' R$ QInt I=10; / }5 G& m7 Y' _9 L6 F( }) ?
Interger I_class=new integer(I); 5 ?& k* q6 X5 R' e: B# i/ J& h5 b
  & o2 v: _; s+ t3 w4 p; h# w
看javadoc的帮助文档。 * A. ^0 o$ S- [( @
附加内容:
4 f& }3 t! B, p: l$ k“==”在任何时候都是比较地址,这种比较永远不会被覆盖。 6 H' t: J5 v9 e0 |+ A2 V
  6 g( N! F3 r& v6 ~
程序员自己编写的类和JDK类是一种合作关系。(因为多态的存在,可能存在我们调用JDK类的情况,也可能存在JDK自动调用我们的类的情况。)
2 K, K2 p7 e) u0 F: m6 R+ @+ T$ j注意:类型转换中double\interger\string之间的转换最多。
3 B# i. h: p, P4 F/ _2 b# c+ h! `2 r
4 f3 c# Z1 Y6 {! d0 f内部类: . \4 r$ |9 ^% ^% T- K+ u
(注:所有使用内部类的地方都可以不用内部类,使用内部类可以使程序更加的简洁,便于命名规范和划分层次结构)。
: g1 I8 H. ^3 P内部类是指在一个外部类的内部再定义一个类。
; C3 [$ }# Z8 A1 j内部类作为外部类的一个成员,并且依附于外部类而存在的。   [3 E2 t5 Q) A
内部类可为静态,可用PROTECTED和PRIVATE修饰。(而外部类不可以:外部类只能使用PUBLIC和DEFAULT)。
4 |( w* K( A1 Y  
$ V  b9 n* \( J2 r: c0 |- q, D内部类的分类: " w+ I8 ^* T$ Z3 z8 L
成员内部类、
8 m: L$ @2 h# U7 z局部内部类、 . O8 b, F: l8 @0 o8 s
静态内部类、   c& h! D/ S9 c9 J. \9 c
匿名内部类(图形是要用到,必须掌握)。 # g0 k' h( Y- Z1 G) W! {- a& M
  ; H6 k4 o; F3 C( X# i9 v* c
①    成员内部类:作为外部类的一个成员存在,与外部类的属性、方法并列。 1 f5 C3 x  @8 a6 h3 I7 o0 C
内部类和外部类的实例变量可以共存。
  m4 l1 X, @# t) p在内部类中访问实例变量:this.属性
  N  Z. w; k2 m" S* t6 d- X在内部类访问外部类的实例变量:外部类名.this.属性。
/ P; {  w. w' z7 i4 I3 W$ s; G  * n* f$ Q* j* @5 X/ A
成员内部类的优点:
( [# D8 c' y7 K( i) _8 T⑴内部类作为外部类的成员,可以访问外部类的私有成员或属性。(即使将外部类声明为PRIVATE,但是对于处于其内部的内部类还是可见的。)
1 n# p# c6 {! a( x) q, A! |, W7 @⑵用内部类定义在外部类中不可访问的属性。这样就在外部类中实现了比外部类的private还要小的访问权限。 ; E8 l* g3 \% d) o
注意:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。 / N/ H1 R7 @) H6 {' l9 q& p  R
对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer$inner.class两类。
: h0 p5 O  o; n9 T3 [- A8 i& w. @0 @  / B! z# e4 d8 |& l& ?
(编写一个程序检验:在一个TestOuter.java程序中验证内部类在编译完成之后,会出现几个class.)
9 K# b0 X; @' H) K% w  0 s6 G# l# l" d/ S
成员内部类不可以有静态属性。(为什么?)
$ L) [" ?& ^' U* d  [- G1 e; c  ( O  F- D+ c6 Z' G- N5 [- b
如果在外部类的外部访问内部类,使用out.inner. 6 u# _, v6 p; P* i2 U
  
! ]% z6 B, p2 e建立内部类对象时应注意:
# y0 I/ R, ^9 p3 `6 }1 y+ n& e在外部类的内部可以直接使用inner s=new inner();(因为外部类知道inner是哪个类,所以可以生成对象。) % A8 @: L* y% `2 ~5 D# [1 V7 S7 Y
而在外部类的外部,要生成(new)一个内部类对象,需要首先建立一个外部类对象(外部类可用),然后在生成一个内部类对象。 * Z* W4 p5 t; R" `1 H% i* T
Outer.Inner in=Outer.new.Inner()。 # e# S# v' q3 p8 c/ R( c: \
错误的定义方式:
& p- ?) \" A! h5 C6 H6 ]Outer.Inner in=new Outer.Inner()。 9 R) ]- a, r. v
注意:当Outer是一个private类时,外部类对于其外部访问是私有的,所以就无法建立外部类对象,进而也无法建立内部类对象。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 21:18 , Processed in 0.291825 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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