面向对象---内部类浅谈
Posted songzongyuan-java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象---内部类浅谈相关的知识,希望对你有一定的参考价值。
成员内部类:
/*
* A:内部类概述
类中的类
* B:内部类访问特点
* a:内部类可以直接访问外部类的成员,包括私有。
* b:外部类要访问内部类的成员,必须创建对象。
* 外部类名.内部类名 对象名 = 外部类对象.内部类对象;
*/
(1)如何调用内部类方法
class Demo1_InnerClass { public static void main(String[] args) { //外部类名.内部类名 对象名 = 外部类对象.内部类对象; Outer.Inner oi = new Outer().new Inner(); oi.method(); } } class Outer { public int num = 10; private int a = 20; //注意内部类的位置和外部类成员变量的位置并列,可联想怎么调用外部类成员变量来调用内部类 class Inner { public void method() { System.out.println(num); System.out.println(a); } } }
(2)若内部类私有,(其实和外部类成员变量私有一回事儿,只需在本类中提供公共方法即可。)
eg.
class Demo2_InnerClass { public static void main(String[] args) { Outer o = new Outer(); o.print(); } } class Outer { private int num = 10; private class Inner { public void method() { System.out.println(num); } } public void print() { Inner i = new Inner(); i.method(); } }
静态内部类:
(1)如何调用静态内部类方法呢?
外部类名.内部类名 对象名 = 外部类名.内部类对象;
Outer.Inner oi = new Outer.Inner();
如果内部类方法为静态,可直接通过类名调用
eg.
class Demo1_InnerClass { public static void main(String[] args) { //外部类名.内部类名 对象名 = 外部类名.内部类对象; Outer.Inner oi = new Outer.Inner(); oi.method(); //调用静态内部类中的静态方法,通过类名调用。 Outer.Inner2.method(); } } class Outer { static int num = 10; static class Inner { public void method() { System.out.println("Hello World"); } } static class Inner2 { public static void method() { System.out.println("static Hello World"); } } }
(2)如何调用成员变量
eg. 要求:使用已知的变量,在控制台输出30,20,10。
class Test1_InnerClass { public static void main(String[] args) { Outer.Inner oi = new Outer().new Inner(); oi.show(); } } class Outer { public int num = 10; class Inner { public int num = 20; public void show() { int num = 30; System.out.println(num); //System.out.println(Inner.this.num); //所属类Inner可以省略 System.out.println(this.num); System.out.println(Outer.this.num); } } }
复习一下,this关键字调用本类的成员变量。
局部内部类
如何调用局部内部类方法?
eg
class Demo1_InnerClass { public static void main(String[] args) { Outer o = new Outer(); o.method(); } } //局部内部类 class Outer { public void method() { class Inner { public void print() { System.out.println("Hello World"); } } Inner i = new Inner(); i.print(); } }
在外部类的方法(method())里面创建内部类对象后,直接在主方法里创建外部类对象调用method()即可。
未完待续.........
以上是关于面向对象---内部类浅谈的主要内容,如果未能解决你的问题,请参考以下文章