一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 3038|回复: 2

java 嵌套例子

[复制链接]
发表于 2021-5-30 12:01 | 显示全部楼层 |阅读模式
package com.kenson;
) `# G. {* H1 H4 w# M9 j# B
; D, v) |8 `, s7 {- y6 J! @7 V( B$ \' S
class Outer{2 j0 Q" C4 d$ N& U
        private int a = 10;1 G. f4 m( I$ M
        int b = 100;. y! d: V6 ^5 a; m/ r/ f
       
% N5 n- Y" V7 a  Y. s       
/ w8 L8 I) ]# @; P        private String outerName = "outerName";+ o* D+ n/ R4 |, n, p1 j
       
. B4 j$ i! S. {2 L/ u( d        public static class StaticNetstedClass{! u. G4 e: w. y* ^: i
                public void print() {4 v9 g( i4 w+ h# b, P0 [
                        // 通过实例访问,可以访问private变量
  V6 r/ N6 ^0 u  \* R6 y. }                        System.out.println(new Outer().outerName);
. d: ]4 [9 ~7 l, }1 C+ k! j                }
6 _* T. V- @% F: ?0 }        }
1 v* n' y9 p: q4 h8 }       
( @5 X* s. i' E$ e% c. M3 f        4 x& @7 o3 h8 \. N6 @. d
        //内部类8 H% k6 N2 ?7 v, |( e) q4 ]
        class Inner{* H7 ?- [* Z* \/ U- F; Y  |
                int c = 200;
' @- h- ^: W* i) a; P                2 j" D* e9 ~% P: N# ]( U$ q$ `
                class LocInner1{/ n5 N/ `' ^5 u
                        void Disp() {
7 b  I+ L9 s8 q: i' C                                System.out.println("This is a LocInner1 Disp");       
# X3 H" }  F( p                        }        2 ]4 ^; L, {) E$ j: o6 S
                }               
: a* {$ Y2 w4 j+ V: |        }. ?& r* D  T  C2 q) Y- h
       
! P1 ]  R: n* W) n$ {        //外部方法2 `8 M. B6 u+ V( P# H5 G2 @
        public void Display() {
6 e& f  e8 W; D3 [: f# j1 a                System.out.println("a=" + a);8 y$ ~9 m1 U( |- C' b
                //局部内部类
+ F/ d1 i5 b& ^' ]                class LocalInner{
$ o% p  H2 }# K, t, H& y" I! U( v                        String ln = "I am a Local Inner Class";7 s2 K  `+ X3 z. s$ u
                        ' x2 _( D# E6 |! _* ?: y: O: x9 a
                        void Disp() {$ }" T* ~/ A0 N. r. H% R
                                System.out.println(ln);
5 j0 T8 G/ H; E0 G+ |2 Z) w                        }# l0 I7 K3 r' h: Q
                }
+ ^; k% M# b; F, @, ~* T       
0 i+ a4 k3 v# U. v* S9 M* E) v* X+ N                7 v9 m6 E, J9 M
                LocalInner ln = new LocalInner();
9 L# `& J5 t$ i( Y7 c6 b0 y                System.out.println(ln.ln);0 m0 e! k5 H9 w; c  ^; o0 {
               
0 ~4 c& Y* z$ ?9 G3 A6 W8 H- Y" N                //声明匿名对像4 R6 l# i( q8 a; D6 S
                new LocalInner().Disp();  S0 i6 [, f4 i3 S7 l
                System.out.println(new Outer().a);4 y/ M: c8 |" }* f
        }
! j4 k! i' C9 P; H% w- N( X, S        ; }& x, X  G$ T
}: B( f) j8 F: }7 z+ f- f
0 y7 v( ]! r, \$ M) R: o

+ L' J7 i' Z4 J6 I. ~. `$ k- d8 i) T3 \4 U4 Z+ k

- k' Y' [( k. E) `  _public class HelloWorld {
: e& z' k, |1 w4 s; P/ \7 a7 F: y5 c. N" Q3 r+ t# z
        public static void main(String[] args) {
" [* \( ]2 Q9 Y! Y, z! W                Outer outer = new Outer();) K# t) @) l0 \1 D
                System.out.println(outer.b);9 P, G  M( c' l0 t0 Q5 y
               
5 k' R) H4 j- t$ D( a                outer.Display();, y$ y0 ^. _! z7 ?7 ]$ p" G, ?; ]
                : L. M: X. z1 c4 J6 [
                Outer.Inner inner = outer.new Inner();! d0 i. m' I3 Z- _2 R+ q8 j5 V
                System.out.println(inner.c);% f+ H+ W$ K4 Q4 D
                ( T+ |$ X$ o! |3 K2 x" V# d& P
                Outer.StaticNetstedClass staticClass = new Outer.StaticNetstedClass();
# Y. }" r4 \# \: o' w                staticClass.print();
% a2 s/ u/ @. v+ X& W# X. s) [               
2 D( o5 C( x: ^; G                7 ?! _# W1 X+ J8 ^
        }
, S- h# w  z- G" N7 w$ c        ( p, @3 X% k6 J5 {
}
) ~0 C6 g2 C$ m6 w4 n6 B- O  d; I. g
 楼主| 发表于 2021-5-30 12:02 | 显示全部楼层
结果 100
# b* w) J0 t# u! Ba=10& N. o) H3 s% m' l$ d; P
I am a Local Inner Class$ u2 G4 i2 G. o+ r
I am a Local Inner Class
# V  q& l& P1 ]9 }: U10, r- v; a/ x7 ~5 O; r, w& U5 k+ w
2004 B9 o6 j6 M8 s! A5 u$ J
outerName
回复

使用道具 举报

 楼主| 发表于 2021-5-31 12:02 | 显示全部楼层
匿名例子% Y8 m4 `, {3 @; V# ]
- K. e/ ^* _( W+ n3 D" G
abstract class Bird {# e) Y, D! w0 l$ a" C" {( F2 g  P
    private String name;$ I6 h% b, B+ ~& r8 B

5 ^' H8 A$ f9 o+ q    public String getName() {) a4 t) z, F* X; h6 ~8 g# t
        return name;' U) i$ {( _& o3 `$ b; B( d+ I
    }& q  t- D8 ^" ^; c
( H' C/ J6 T$ c
    public void setName(String name) {. J% ^  O: T" |5 C- I4 N) d
        this.name = name;
  d" y9 h3 G( X6 \% D8 n6 y6 z    }
) P/ L% S; j) N+ u* }
1 T" x" a* }4 T) C7 E; z    public abstract int fly();
! i; N+ P4 K6 C4 o/ M# B9 S6 _& U}
3 _6 J+ e  O) T. q9 {+ K  @4 v- @( W7 P! ]0 U. Y
% A8 @& C7 h% I- P% N' A. v

" w/ c7 |# I! Z, j* Spublic class Test {5 S0 E4 ~) o5 u  G6 r8 V

9 n0 u/ i! H7 {    public void test(Bird bird){
' o% ]3 T8 {7 `2 l        System.out.println(bird.getName() + "能够飞 " + bird.fly() + "米");
) a8 ~% u, w+ \; I% n$ b' H    }
+ e: H: @# ]% N3 J/ H/ C% \3 u5 u4 _4 }% y# O
    public static void main(String[] args) {
5 u5 e8 f7 C2 z, r7 R1 B8 q        Test test = new Test();" _0 ~% m& h& s: y7 R3 s
        test.test(new Bird() {  //new bird 是一个匿名对像,从而调用了TEST类的test()方法5 ]) @( @: n! u1 W& S  m8 e

/ l% \2 C3 G8 P3 G' {            public int fly() {( M" ?9 y; I4 ?. {7 }. r) u( J
                return 10000;9 A; x( V% P2 c, ^$ O" X6 T
            }
4 i# H4 z/ i! u. Z8 t8 Z$ ^7 V+ Y  B. V7 w! v" f! }- p
            public String getName() {
5 w! w- B7 h& o' L( i' @                return "大雁";
- u$ D. c8 ], m* B6 e            }' d/ l8 B( h6 w7 |! g
        });, X+ B( d2 b3 \# c; ^
    }
! g# L# l4 Y# R- N7 J/ W}
1 N  c: [+ v% j' f0 w: h- Z
7 M$ r' M' B; }; i------------------( f% g3 I- u) I. e9 C
Output:2 R. C% j3 O" ]" y) A
大雁能够飞 10000米" U: n! e/ t, H4 K- U

% E& f7 X! I5 k  e/ @
% z4 _- U  }5 P2 E更多:
# q6 N4 n  o1 X0 m' V% K% L: thttps://www.jianshu.com/p/0950c6787c7d5 `. A5 n2 s; A* |% k
回复

使用道具 举报

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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