一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 3037|回复: 2

java 嵌套例子

[复制链接]
发表于 2021-5-30 12:01 | 显示全部楼层 |阅读模式
package com.kenson;
4 q6 n, o1 l# u; u* M3 y- v3 Z4 e9 e" w; n1 Z1 f

# m( {' }; V+ Y6 i) N. Vclass Outer{
  K, V3 F/ w) l& @8 P/ Z$ `- S9 x        private int a = 10;) y3 f- S' a  W/ [$ Q+ x5 k2 }6 f
        int b = 100;% L+ X. h) {. j+ t' y1 B' O0 l
        + ~0 R" @( b0 \2 \
        0 B2 P! g, G' a: j7 O& u# d9 m
        private String outerName = "outerName";
$ Z/ C% |6 s* r- w, T7 f" E' h       
+ M+ T' K7 U! O        public static class StaticNetstedClass{% G4 e( f* f7 w) i
                public void print() {
" Y6 |3 _1 B+ _+ O: p6 O; n+ @                        // 通过实例访问,可以访问private变量
5 z. U# k" _: R4 G7 ?! R. [                        System.out.println(new Outer().outerName);4 r( l6 v/ }+ T% ]' y/ S
                }- t% I7 Y0 s) O) \
        }4 ]- _$ |8 X" p5 \
        + f5 @7 ?' v# z
       
2 ~( |" |2 E( o: z9 g        //内部类7 A/ d; k  X, w! m: D1 S  x
        class Inner{' `, w3 F. K4 g# b9 d2 `
                int c = 200;% A# o1 T. t8 c* k1 G! l) P$ K
               
  f! n- ?; j" N: `                class LocInner1{
! l- ^9 B4 h+ @2 ?                        void Disp() {; L8 w+ s- m( ?% Z# T; }$ }
                                System.out.println("This is a LocInner1 Disp");       
/ T: \6 |9 `. S7 R- i                        }        7 [/ Y$ @, a% r- q+ i0 Y
                }                ; R/ r) n) a. ]  l  H& a
        }
, W+ y3 B! t5 A! E7 F( P# x        7 K, B" v5 W4 E: W8 z$ q/ [
        //外部方法
* K( V; d8 C$ M        public void Display() {! q1 D$ M, i# W8 M% b
                System.out.println("a=" + a);
: H0 t7 {0 N5 l. r$ ]5 T( M3 r                //局部内部类; x- J! }5 t/ E, J+ K- Z) P
                class LocalInner{
& R* h! [6 N, F# q) m                        String ln = "I am a Local Inner Class";
+ i7 u3 Z$ m4 J8 x; w' R                        * M6 E, t% s1 P1 G' H
                        void Disp() {
, o/ e( c1 _# n, o& w/ r9 D                                System.out.println(ln);
+ M. t- m+ j* e) i3 z9 ]6 ~                        }% _/ E1 |) J: k6 G6 {3 h4 [( D2 _
                }
" I+ b. L2 q+ g9 u        2 M! n8 m" t  F2 i
               
: ]* ?8 `4 P0 M- w2 b9 Z- i5 `7 o' A                LocalInner ln = new LocalInner();) M# B1 p- O* A4 Z% f7 R/ N5 N; I
                System.out.println(ln.ln);3 {" F; s% L+ c% |) w# n4 \
               
; ^$ I: h2 \* T$ C9 g1 X8 W' k2 l7 ^                //声明匿名对像
7 L1 l+ Z/ `8 J/ f* f                new LocalInner().Disp();" s! i1 T2 T! y9 W; C9 k8 v
                System.out.println(new Outer().a);
1 u) D$ r$ c2 b6 }0 M        }
% C$ Z5 a% y8 b2 a  g       
1 A+ X4 W: R" k/ q' O3 B: l$ T3 l}/ |' s6 j5 ]. t6 J* r! o

3 j) ~% r8 z. T- I) t0 A
7 O. b- K& K7 Q; s0 i
( I* r, Z- U) r* g6 J. Q# ?; G$ O1 `4 q- V
public class HelloWorld {
' ], S3 ~! J, M) |3 X
2 I; A% N1 o! L1 v8 y. }        public static void main(String[] args) {  Y- n7 S8 P" m0 ~0 ~( Y
                Outer outer = new Outer();2 X, M- ]1 N+ L
                System.out.println(outer.b);
  K  G% S3 o6 o2 e$ u' |. N' ~                & W) w( T) Z/ q7 j3 \' H8 M* J
                outer.Display();
; H4 c* q( R' d" I3 p/ ^0 I                8 {5 w" G  ~( z% t
                Outer.Inner inner = outer.new Inner();) ?4 W1 U! j& I, S
                System.out.println(inner.c);
4 c7 ?1 ]4 y& b" i6 k5 p' f9 q                  Y' w6 O1 |/ u# I6 S: Q- m
                Outer.StaticNetstedClass staticClass = new Outer.StaticNetstedClass();: P5 K( b( r! p9 T7 G0 O
                staticClass.print();) d, A) ]" }: N' M
                # F% U, D" t, r6 R5 a/ Z
               
1 K, Z( u# \$ W0 r- C" `# i4 L        }
3 O8 u/ D8 C) q# v" r        ! Y6 b% w" M  I. v% K
}
, B. i3 f5 [0 |* ~5 i# V; |8 h: Y) u5 i
 楼主| 发表于 2021-5-30 12:02 | 显示全部楼层
结果 100
8 ]8 h. _" P: O; e5 k6 u! ra=10
$ h$ N0 ?- F. m/ r7 F) {1 R; B, TI am a Local Inner Class
- ?  h/ R) ^8 H$ g+ e5 uI am a Local Inner Class/ Y: p# j5 |3 g: D0 W# j3 e3 ~+ H
10
4 ?4 S& e/ W7 b- _" n" F$ A# ]200
5 ~8 Z- R! o2 V2 M5 xouterName
回复

使用道具 举报

 楼主| 发表于 2021-5-31 12:02 | 显示全部楼层
匿名例子8 F& D' L$ O5 L( g% w
* _# A) G1 P1 ~9 n# e( \) u, D) C
abstract class Bird {! ]1 `( Y& b& ]7 f) A
    private String name;( W1 Q2 C# p& q: _

+ w5 H. H9 z' V8 L( b% Q* p    public String getName() {
; S: q0 t" t; |; S        return name;
/ ^7 k" \" X) [, D6 S    }
+ f( X% ?, ^' Q" C* U+ E- F$ Q+ B- a% I: N: M9 V
    public void setName(String name) {
6 Y3 z- s% Y* L9 g( v/ Q. V        this.name = name;
! Q4 P0 @; x) C% g( K    }/ X5 Z( K8 F& ~1 x$ g
3 L! {2 A, T, q( j3 M' P3 B/ R/ {
    public abstract int fly();
& K+ n, {5 @: J}
7 J! }: x5 T+ ~: ^; H+ h: B$ M8 n. a/ i: n3 s2 Q3 h2 j, @

& ?7 @% N5 z; @* S' e( l' h7 v$ I' ]& u( r
public class Test {$ n8 G; g- [8 E  R7 B
' s* F! Y, X) {3 X  H. [5 z* l
    public void test(Bird bird){
( G* a( \1 b2 f, Z. x        System.out.println(bird.getName() + "能够飞 " + bird.fly() + "米");* ~, |, N# G: T: Q
    }
9 \& J' x; M) k/ W3 q& X) |- a2 X
    public static void main(String[] args) {
$ K9 x5 m2 s7 p" |% C        Test test = new Test();
$ A' }- q- J4 _6 S        test.test(new Bird() {  //new bird 是一个匿名对像,从而调用了TEST类的test()方法
9 C: A6 x/ ?: o1 M, f! _: R( g6 i# N6 v
            public int fly() {' S4 n& Z" a) i# Z. k" R8 L3 g, L. E0 T7 l
                return 10000;
% ~: g8 K5 U8 K" ?9 F! D# Y1 I9 k            }
1 K9 X& v, s; D+ M2 U
, y  O  Y# _0 M7 v% A7 }+ ?            public String getName() {
+ `3 _3 K) E1 Z1 y6 [                return "大雁";
$ Z- Z' [: {# X            }* q. C. P: ~$ u, f* C1 H. D
        });
8 `$ X# l& P8 U9 K    }) k4 A+ m% ^8 t2 C
}
9 s) E0 P4 [+ w# y+ p1 [" h5 C& z2 _/ U; y2 W
------------------0 |3 v. [. y9 _$ {% j$ q
Output:
& `/ c" `0 i1 X* p+ [- G2 M大雁能够飞 10000米
; w( {/ x! G* Q* q7 B
+ K2 `& \; S1 ?% p6 s
# Y) ?/ @  I- q更多:
* K' t$ B( R' J0 m; O+ }https://www.jianshu.com/p/0950c6787c7d8 M; Z. v4 Q7 P: _$ ]( U
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-8-20 09:00 , Processed in 0.041205 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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