java中内部类详解
2017-10-25 19:22
357 查看
java内部类详解
在java中,类对于大家来说并不是一个陌生的名词。内部类这个词,想必很多人都不陌生,但是也不会觉得很熟悉 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。因为在开发中我们很少接触这个概念。那么今天我们就好好来探讨一下内部类。下面是下面是本文的目录大纲:
(一)内部类的基础
(二)深入理解内部类
如有不正之处,请多谅解并欢迎批评指正
请尊重作者的劳动成果,转载请标明原文链接:
http://write.blog.csdn.net/postedit?ref=toolbar
(一)内部类的基础
在《thinking in java》一书中对于内部类是这样定义的:可以将一个类定义在另一个类的定义内部。内部类是一种非常有用的特性,因为它允许你把一些逻辑相关的类组织在一起,并控制位于内部类的可视性。然而我们必须要了解到,内部类与组合是完全不同的概念,这一点很重要!。
下面我将以thinking in java中的一段代码作为示例:
public class demo2 {
class Contents{
private int i=11;
public int value(){
return i;
}
}
class Destination{
private String label;
Destination(String whereTo){
label=whereTo;
}
String readLabel(){
return label;
}
}
public Destination to(String s){
return new Destination(s);
}
public Contents contents(){
return new Contents();
}
public void ship(String dest){
Contents c=new Contents();
Destination d=to(dest);
System.out.println(d.readLabel());
System.out.println(c.i);
}
public static void main(String args[]){
demo2 p=new demo2();
p.ship("wdahda");
demo2 q=new demo2();
demo2.Contents c=q.contents();
demo2.Destination d=q.to("Broneo");
}
}
当我们在ship()方法里面使用内部类时,与使用普通类没有什么区别,在这里,实际上的区别是只是内部类的名字是嵌套在demo2类里面的。
在外部类有一种方法,该方法返回一个指向内部类的引用,就像to()方法和contents()中看到那样。
(二)深入理解内部类
我们知道在内部类中,内部类可以访问外部类的所有成员属性,包括静态成员和私有成员属性,下面以一个例子作为说明:
class Circle {
private double radius = 0;
public static int count =1;
public Circle(double radius) { this.radius = radius; }
class Draw { //内部类
public void drawSahpe()
{ System.out.println(radius); //外部类的private成员
System.out.println(count); //外部类的静态成员
} } }
注意的是当内部类拥有与外部类重名的成员属性或者成员函数是,若内部类需要访问外部类的成员属性或者方法;应采用:
外部类.this.成员变量;外部类.this.成员方法;
内部类访问外部类当然是可以随心所欲的,但是如果外部类需要访问内部类的成员属性或者成员变量的时候,需要创建一个内部类的对象,然后通过指向这个内部类对象的引用来访问内部类的成员变量:
class Circle {
private double radius = 0;
public Circle(double radius) {
this.radius = radius;
getDrawInstance().drawSahpe(); //必须先创建成员内部类的对象,再进行访问
}
private Draw getDrawInstance() {return new Draw(); }
class Draw { //内部类
public void drawSahpe() { System.out.println(radius); //外部类的private成员
} } }
我我们
我
在java中,类对于大家来说并不是一个陌生的名词。内部类这个词,想必很多人都不陌生,但是也不会觉得很熟悉 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。因为在开发中我们很少接触这个概念。那么今天我们就好好来探讨一下内部类。下面是下面是本文的目录大纲:
(一)内部类的基础
(二)深入理解内部类
如有不正之处,请多谅解并欢迎批评指正
请尊重作者的劳动成果,转载请标明原文链接:
http://write.blog.csdn.net/postedit?ref=toolbar
(一)内部类的基础
在《thinking in java》一书中对于内部类是这样定义的:可以将一个类定义在另一个类的定义内部。内部类是一种非常有用的特性,因为它允许你把一些逻辑相关的类组织在一起,并控制位于内部类的可视性。然而我们必须要了解到,内部类与组合是完全不同的概念,这一点很重要!。
下面我将以thinking in java中的一段代码作为示例:
public class demo2 {
class Contents{
private int i=11;
public int value(){
return i;
}
}
class Destination{
private String label;
Destination(String whereTo){
label=whereTo;
}
String readLabel(){
return label;
}
}
public Destination to(String s){
return new Destination(s);
}
public Contents contents(){
return new Contents();
}
public void ship(String dest){
Contents c=new Contents();
Destination d=to(dest);
System.out.println(d.readLabel());
System.out.println(c.i);
}
public static void main(String args[]){
demo2 p=new demo2();
p.ship("wdahda");
demo2 q=new demo2();
demo2.Contents c=q.contents();
demo2.Destination d=q.to("Broneo");
}
}
当我们在ship()方法里面使用内部类时,与使用普通类没有什么区别,在这里,实际上的区别是只是内部类的名字是嵌套在demo2类里面的。
在外部类有一种方法,该方法返回一个指向内部类的引用,就像to()方法和contents()中看到那样。
(二)深入理解内部类
我们知道在内部类中,内部类可以访问外部类的所有成员属性,包括静态成员和私有成员属性,下面以一个例子作为说明:
class Circle {
private double radius = 0;
public static int count =1;
public Circle(double radius) { this.radius = radius; }
class Draw { //内部类
public void drawSahpe()
{ System.out.println(radius); //外部类的private成员
System.out.println(count); //外部类的静态成员
} } }
注意的是当内部类拥有与外部类重名的成员属性或者成员函数是,若内部类需要访问外部类的成员属性或者方法;应采用:
外部类.this.成员变量;外部类.this.成员方法;
内部类访问外部类当然是可以随心所欲的,但是如果外部类需要访问内部类的成员属性或者成员变量的时候,需要创建一个内部类的对象,然后通过指向这个内部类对象的引用来访问内部类的成员变量:
class Circle {
private double radius = 0;
public Circle(double radius) {
this.radius = radius;
getDrawInstance().drawSahpe(); //必须先创建成员内部类的对象,再进行访问
}
private Draw getDrawInstance() {return new Draw(); }
class Draw { //内部类
public void drawSahpe() { System.out.println(radius); //外部类的private成员
} } }
我我们
我
相关文章推荐
- Java基础(八) Java修饰符及接口详解之(二) 内部类
- java提高篇(十)-----详解匿名内部类
- java提高篇(九)-----详解匿名内部类
- Java中的匿名内部类详解
- java提高篇(九)-----详解匿名内部类
- java提高篇(九)-----详解匿名内部类
- java 内部类详解
- java 内部类的详解及实例
- java学习之旅51--面向对象_24_内部类详解
- 【转】java提高篇(十)-----详解匿名内部类
- java提高篇(九)-----详解匿名内部类
- java---详解内部类
- Java 内部类详解
- java中的匿名内部类——详解
- java提高篇(九)-----详解匿名内部类
- java基础 内部类详解
- Java 之 -------------- 内部类 详解
- java四种内部类详解
- java提高篇(八)----详解内部类
- java笔记(四)[java中的import关键词&java中的javadoc用法及注释说明&java中的final关键字&java中的内部类详解]