一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 3368|回复: 2

java 嵌套例子

[复制链接]
发表于 2021-5-30 12:01 | 显示全部楼层 |阅读模式
package com.kenson;
: Z: Y0 [6 C/ T/ w% y" `  p' I/ n8 S8 y: M) \

3 p* G/ H/ U( C# A. [class Outer{
6 S5 S. U6 ~" R0 k  D        private int a = 10;5 b( N* }0 `6 N+ i; F
        int b = 100;
- J) i  \9 u/ `3 K0 L       
) H; n- P" f* S0 K# D( f        - [# c* U, m- a8 C, B8 c
        private String outerName = "outerName";3 s* i" C5 K' w2 j
        0 F2 P1 L# X3 u6 v
        public static class StaticNetstedClass{, B% j' L4 ^' B) d8 l2 V' E
                public void print() {- c* e" X3 [: O6 e9 w
                        // 通过实例访问,可以访问private变量
  q5 e  e+ T: W+ _: A: f' C* X                        System.out.println(new Outer().outerName);
( U# `" B* R5 s6 V8 f! ~. [, ^0 j                }' O" E# v/ A4 h, b5 y6 n
        }; y* `& u1 ]" D* _0 R/ M( }
       
; a9 U6 b$ I* F8 e/ V. K       
# {9 J' R  b3 Y, [9 J        //内部类
1 T3 u. V4 N% {* f' w        class Inner{2 W$ d/ \# v+ d
                int c = 200;
+ }7 p7 t; [$ K1 x$ e& k- q                6 @9 B) V1 ^* Q0 z
                class LocInner1{+ s, g2 a' l4 U' R+ O
                        void Disp() {5 z( p! ?' a' e3 K! P. k3 O* f3 K
                                System.out.println("This is a LocInner1 Disp");        ) w# ?  J3 A+ d6 q! U* B: j
                        }       
: f- E! C3 T. r9 Y) K% t9 z                }               
# B# p* c, N# U9 n. k* w        }; H' c/ Y8 z. x- m: G: B
       
$ y+ \( _" L% k( ~* P8 Z        //外部方法& l2 C' H0 h8 F0 S
        public void Display() {% }. ~$ i3 j# l1 E2 r7 _
                System.out.println("a=" + a);- @+ H3 R& E- U/ H9 B. t- Q
                //局部内部类
. j1 \6 b- B+ ?0 s3 u6 q) m                class LocalInner{
$ @0 \' ]: i3 p8 `# @5 {                        String ln = "I am a Local Inner Class";
6 @$ A) r- ~! W- i, x# w                        & o5 x1 p$ H4 N+ o
                        void Disp() {
3 p7 W. q2 j8 M8 F, v  z                                System.out.println(ln);
6 n5 o- f* C6 [. I- G% _0 L                        }8 y$ r1 Q/ y, R  \4 e# L+ ]
                }4 i( p# C3 o; ?4 p' M+ G0 @4 n" A
       
  Z) u. [% }- V) s                - j0 ~) x* [* ]( U: Q, y
                LocalInner ln = new LocalInner();; {' v  u. w6 D
                System.out.println(ln.ln);
4 E# d) E" i7 T! {3 B                4 R) K: g; N! n- |' |
                //声明匿名对像/ @* |9 h5 {* F# I2 m
                new LocalInner().Disp();( B4 ?) Q( n( e3 L! m- L% P
                System.out.println(new Outer().a);
* W2 q( x, [  J7 P        }, }  C( Z! }9 P9 e% k
       
( x8 S) W. Y; ~) _2 k) {* c}
. q  h" Y7 Z  M9 D1 ~
) w% L% a- C' q5 Q
/ q% _6 W$ K  P1 Q  W$ C+ @
% }# T0 T- l9 B* o# F$ e; @# t- c
( k; f) _+ @8 F9 w7 Q$ ]8 C0 ~, m$ spublic class HelloWorld {) T1 u, K, U! r9 S" d* f

, t6 n) M' K9 I  V# y        public static void main(String[] args) {
, U/ o* D; @, z) ^2 y                Outer outer = new Outer();/ f0 M& t; _, \3 {  l* l
                System.out.println(outer.b);2 u! n, ^; C) G0 C6 h' a; ]
                $ R0 x+ I1 g" y0 _6 c1 Z
                outer.Display();
: c' a4 n9 u6 e               
2 H1 p+ i5 K8 `2 G( a                Outer.Inner inner = outer.new Inner();
! f  h( N$ W! t: o% q( s( R) Y, {                System.out.println(inner.c);
& J9 m+ m5 k9 j2 T  O6 E8 D- L                6 G' v- D7 D% G( C- y  p
                Outer.StaticNetstedClass staticClass = new Outer.StaticNetstedClass();
% `( O& S0 J8 b% m                staticClass.print();
6 _0 ]2 D; `9 v4 G               
0 h+ J7 S+ R4 J. T               
* m% L  g( R7 ?) r" V# Q6 L6 ]        }  H0 |, E3 E# y6 i1 A; @! ~
        2 b7 _+ M3 [! u8 D( B7 G. I
}
1 \2 F8 ^% J  p# p" e, c$ V2 y$ |' F6 T
 楼主| 发表于 2021-5-30 12:02 | 显示全部楼层
结果 100
6 n. Y6 i6 K+ ^) ?5 r+ G" x0 Pa=10
+ ^, z7 t! f! T6 t" }3 G' F  l" l$ PI am a Local Inner Class
0 P; \1 `" B1 B+ o9 NI am a Local Inner Class2 D. _" q& W# |+ F, k" _  V8 Y9 E
10( k4 W; l+ Y& Z, T' y) e
200
' {* n( z2 }' q, LouterName
回复

使用道具 举报

 楼主| 发表于 2021-5-31 12:02 | 显示全部楼层
匿名例子+ V8 e) j8 K8 n
( ]" N9 r5 i8 H  S; H
abstract class Bird {
1 a9 E; Q6 h; W/ y3 V3 H9 Z    private String name;9 [* V5 H. Q2 K/ f

6 ^; V% r2 ?1 ]9 V6 A' S    public String getName() {
( X# C/ N5 y2 U  V/ e        return name;6 x. N2 T. s6 C" g
    }
/ b" ?+ C; r$ Q* V/ M5 m* H: A8 g9 w/ D, N& Z; o
    public void setName(String name) {3 Z: `& ~% P! t
        this.name = name;
' ^3 L- q$ z  q# T0 Q7 o    }
: }% e0 B- }9 u/ T# G8 {
% x, j  r$ o7 F9 n5 a    public abstract int fly();
: p1 }! C3 y+ v7 I8 D1 Z4 S}$ E/ h: B& e4 t
6 p2 k) j% @# u
8 A; ^* C5 D) Z" K

( C4 r  ^: E" ?6 M+ A" _public class Test {
. ~- y: [3 R  D
/ r, `( ]  [. b+ a/ N" I4 j    public void test(Bird bird){
! Q9 c4 X" c: m; {        System.out.println(bird.getName() + "能够飞 " + bird.fly() + "米");
7 m' q6 X' U1 w    }
( F+ ]0 J) Y+ W7 o4 X2 V
9 J( Z$ k6 [! Z2 O! W5 Z+ U% d    public static void main(String[] args) {
8 w4 E7 K  I' x3 [0 p( ~* `1 F        Test test = new Test();$ u6 D/ l( g/ U+ P0 d
        test.test(new Bird() {  //new bird 是一个匿名对像,从而调用了TEST类的test()方法
# @; ~4 k1 m2 A! o3 C2 H/ _7 H' \, O# B) h' z  `* i
            public int fly() {; G& Z4 {3 Q* b0 B
                return 10000;
7 \) s+ t0 {$ [. y% n  I            }3 e3 ~8 t) M- I; B

. b' p  q2 _, Q            public String getName() {7 q/ t( k% P5 E- Z
                return "大雁";
" t8 Y# ]+ Q( A            }! ]  S2 Q3 w. r' ^6 E- E# I
        });0 \2 W% p7 y0 Y  h& {1 O. Z1 |
    }
# g! u. P. E4 ^! a4 B9 A# _' Q}/ r. e: s' I' v2 H, X
4 G# b7 Q& L8 m* c6 H
------------------- w9 V( G. g5 q0 ?7 w$ n
Output:; M1 M/ u# @; l! {
大雁能够飞 10000米/ z& B: s; x" A1 M6 g% v# v
, B2 M1 L. Z$ w0 e

" E4 J8 Q$ l- N3 K更多:
0 P7 O8 h7 m4 Z: c% z/ y/ }https://www.jianshu.com/p/0950c6787c7d
1 r6 v  Z5 v: B% }- ~* V
回复

使用道具 举报

本版积分规则

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

GMT+8, 2026-1-11 17:23 , Processed in 0.033121 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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