一乐电子

一乐电子百科

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

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 2791|回复: 2
收起左侧

java 嵌套例子

[复制链接]
发表于 2021-5-30 12:01 | 显示全部楼层 |阅读模式
package com.kenson;* q) `3 r3 |4 m4 q  V/ x2 \( O

- W& e9 T, ]6 R, W  E
: C1 X+ T* R5 \class Outer{% L: n. _9 w" R, L
        private int a = 10;8 E. T+ O$ V2 t4 o
        int b = 100;
5 T% d) @6 u7 ~0 x       
* J! l* ~$ a7 |6 i        ! Z+ u2 x2 |- }: T" H
        private String outerName = "outerName";; I5 l: _6 B6 s$ z' Z' K+ |
        7 V3 J& o8 t4 c& X# `$ D5 E
        public static class StaticNetstedClass{% q+ x9 o! j6 r- x2 k' d! |/ T
                public void print() {1 O0 J" u( U, V5 w  F4 X1 {
                        // 通过实例访问,可以访问private变量2 ]% Y  o, {* U. u6 K4 d7 }  v- h  |& I
                        System.out.println(new Outer().outerName);
6 B% c# m. n( a. R3 X9 m) Y& W                }
1 G2 ?) }' N8 w+ h) x8 X        }
- h, \8 o& m: H: M7 g       
' n+ W# }0 C3 a# W: ~       
7 b2 P  r, ^3 V3 f        //内部类
" M" `1 _& k+ @" s( l0 g. E! C1 K' d        class Inner{
* y& U1 `  ?" b% X! q                int c = 200;
/ B# W) d9 ]' a6 B2 q               
1 l7 m. z/ S- ]7 V! I4 ~                class LocInner1{
- }" D8 q" A8 z% h5 V, @2 z1 f                        void Disp() {5 v7 @: {. e5 }3 d! O, R+ h
                                System.out.println("This is a LocInner1 Disp");        " u3 \* E8 D( c/ o. v9 S; G
                        }       
8 B: b# x" B% r3 V# A4 C( c, |                }               
0 d( e* l! v, `$ O6 |9 ^  W7 D        }
1 \+ n$ c6 Y& W       
+ b1 a. v2 G% W        //外部方法
. u* R: W# g  A. n        public void Display() {# F, ?! t# F, g
                System.out.println("a=" + a);: D0 s2 H1 m) ?
                //局部内部类! j! N! l* z1 X, ?6 l3 J2 }
                class LocalInner{
6 {0 M0 ?9 k  O  W) x                        String ln = "I am a Local Inner Class";
+ r1 D6 `/ c: Z# [# m/ @                       
( r$ p+ T: k+ v0 n/ o                        void Disp() {- n0 M/ e; G; J
                                System.out.println(ln);1 i& q: R; S+ h
                        }% ]" s! h# t0 I; d
                }; i: H3 v+ ]9 S; o% N
        6 @1 s, G% n- s. J, _' b
                % k$ [) }& S  U  s8 b; I5 Y
                LocalInner ln = new LocalInner();
# c3 X  ?' |4 w4 M                System.out.println(ln.ln);
" S2 `( Z* s$ _# S( j# [4 T, @# q                ( Y+ K" z5 |8 z8 P# d( a; _
                //声明匿名对像4 t" i5 @" c; c& s( o( p
                new LocalInner().Disp();
* u# A# m, D4 t  x. `+ P) ]+ P8 p4 Z                System.out.println(new Outer().a);
  T; U( G( \! {4 L9 d! L        }
, @+ L  _* M  b        $ F: m/ H# |# `( h: t
}6 c# @! n0 c4 D3 p" ]/ R# s: v
. d. E( }5 `( s0 W

8 X+ ]' z- A9 q3 e/ `: x' N2 b+ q% V* U" \9 V

: G2 K5 V% B6 T4 V+ q6 Tpublic class HelloWorld {
9 ]7 l0 P7 J  X7 |6 S1 R
2 j3 J. B+ W: S# K1 m- ?        public static void main(String[] args) {
& [0 C. `6 {/ Q$ q  u( o. s8 d                Outer outer = new Outer();
& E( v' l: `* i5 F3 Q3 N% F                System.out.println(outer.b);6 _3 P7 j9 K7 T
                " b( o+ G9 k: u6 n: p, a. ^
                outer.Display();$ J, c: L% _% t3 t
               
5 J% @* Q' v# d# @. M: _) H" A                Outer.Inner inner = outer.new Inner();
% T/ c! B# r/ W5 ]' e                System.out.println(inner.c);
: f" ~# @: x+ s& Q               
( G' k% y: C' K9 |# d: }                Outer.StaticNetstedClass staticClass = new Outer.StaticNetstedClass();3 x( y) l5 G! i( j1 H
                staticClass.print();. D  H, k9 u+ _- U
               
) [( R& a/ h4 x7 E               
" A! v- v: b; T8 U& x0 u7 v! x        }! O& G; Q" |  m8 i  M* |
        # F+ _9 O, y/ o0 {) j0 e
}
7 ?7 }% w3 `- B
! K* m( H: Z9 p2 V, j  A, o
 楼主| 发表于 2021-5-30 12:02 | 显示全部楼层
结果 100+ [+ F* a" j% O( o
a=10
: ]: C9 C; ]! I1 q# @I am a Local Inner Class
  [; k1 A! ?# l9 ^" s% uI am a Local Inner Class
+ c9 x$ t# g% a; [: [8 Z3 W10) `+ h) r3 |; ^+ j+ a% Z
200
0 I3 Y+ E9 X8 P7 x( j* b1 louterName
 楼主| 发表于 2021-5-31 12:02 | 显示全部楼层
匿名例子* i9 Y) h# o8 ?2 H
" `# J2 o0 o9 v( T8 Y# F
abstract class Bird {
+ D9 j) k  W6 l    private String name;/ \1 V" Y8 P+ T/ r8 p, O
6 B" S, r9 l% N! e) w; p
    public String getName() {; ?0 m, J# Z, w4 u
        return name;
7 r% P& T! \8 T* p4 V0 q, C    }
. c3 J5 K" t' p' U& b: @% c7 S% ^2 a+ ~6 a' c! V' o
    public void setName(String name) {- z0 R* h$ k- C
        this.name = name;3 p) d/ ^8 Y3 e1 Q* N1 p
    }' x7 b. L  j1 h- K# Y

) Q6 |7 l9 c" V$ T5 O( ]0 v) n, G    public abstract int fly();; o. k2 P6 n9 C1 J4 ^: x5 |
}4 ^# I6 h( ?" ]* |8 C7 i

: K! L. I" N* P- C" K- T5 T
+ V, `% n" B8 C/ C& i1 e! R& h
1 ?! \# l# W2 x& K! Ipublic class Test {- R# C0 Y! d* S% }

( x1 m9 r! _5 ]    public void test(Bird bird){0 l( A) m- \) A2 D: N+ g
        System.out.println(bird.getName() + "能够飞 " + bird.fly() + "米");7 E+ \# p' Q. g. w, _* L
    }/ F  ~& m; n8 u* q9 S) \
: D+ n2 I8 J  P7 S) Q
    public static void main(String[] args) {
# F, L! m8 U! `8 K# k; m) \% [        Test test = new Test();
6 h* I0 v! A: O+ H$ x/ |7 K        test.test(new Bird() {  //new bird 是一个匿名对像,从而调用了TEST类的test()方法6 V) G; [" w0 w: F+ {! g' g. j
+ g- _( A! q( z& ~. ]
            public int fly() {: G5 d0 k/ R/ h6 Q3 ]
                return 10000;: H' S4 m$ \( w5 ~- S3 r
            }
+ ~4 W: P  y# a  \
; L9 ?$ I8 p; H2 _& t9 Y            public String getName() {
5 J5 l. g, @9 D2 f, s                return "大雁";
/ o* a* {( K8 g            }
8 m# r, u; C" C7 L' h0 \        });& _7 D2 i9 H7 Q8 o0 t4 u2 X
    }+ ?0 Q% z. S) R9 O% {# j
}
1 A4 m; A7 V4 K7 G6 V( `- D* e+ W6 r. }( d
------------------
8 Q( k: n) a) W- r' KOutput:
/ H$ p0 J$ p2 v大雁能够飞 10000米
# Z( o! t' ]0 S5 p
& O" ?5 i4 ?# C0 C; S
6 `7 \$ n( O2 x* h& p- b更多:
( T  |' J8 a' O7 V8 b7 H. _https://www.jianshu.com/p/0950c6787c7d
9 r6 v- b/ O7 Y1 z: w* a$ l

本版积分规则

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

GMT+8, 2025-4-28 05:50 , Processed in 0.046197 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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