黑马程序员技术交流社区
标题:
集合与内部类
[打印本页]
作者:
HM何伟
时间:
2013-4-7 19:05
标题:
集合与内部类
本帖最后由 HM何伟 于 2013-4-7 21:34 编辑
一个外部类中能创建内部类的匿名对象不??顺便帮忙看下下面的代码有什么问题 ??
package Conllection;
import java.util.*;
public class IteratorTest1 {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add(new Person1("张飞", 20));// Object ob=new
// Person();add("参数"):参数为对象Object
c.add(new Person1("关羽", 21));
c.add(new Person1("刘备", 22));
Iterator it = c.iterator();// 此处的iterator是ArrayList内部中的一个匿名内部类.而Iterator则是外部的接口.
while (it.hasNext()) {
Person1 p = (Person1) it.next();
System.out.println(p.getName() + "........." + p.getAge());
}
}
class Person1 {
private String name;
private int age;
Person1(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
}
复制代码
作者:
jdzzlf
时间:
2013-4-7 19:16
1、你这个代码会报错,因为main()是静态方法,所以你的内也要变为静态的。内部类对象这样创建是可以滴。
2、解决方法:class Person1----->static class Person1
3、帮你运行了一下,结果为:
张飞.........20
关羽.........21
刘备.........22
作者:
张先龙
时间:
2013-4-7 19:28
被楼上的说完了 内部类有些规则还是记清楚 给你贴一下:
1、可以访问它所在的外部内中的成员,包括私有成员。
2、外部内访问内部类则需要先建立内部类的对象。
3、建立内部类对象时需要标识内部类属于哪个外部类。用下面的格式:
OuterClass.InnerClass in =new new OuterClass.(). new InnerClass();此格式并不是很常用。
4、内部类可以被private和static修饰,
被static修饰的内部类只能访问外部类的静态成员,在外部类访问内部类的非静态成员可以这样写:
new OuterClass.InnerClass().内部类非静态成员;
访问内部类的静态成员则这样写:
OuterClass.InnerClass.内部类静态成员;
5、局部内部类(例如定义在外部类函数中的内部类),不能用private和static修饰。
6、当内部类中定义了静态成员,则这个内部类必须是静态内部类,即非静态内部类中不可以有静态成员。
7、外部类中的静态方法只能访问静态的内部类。
作者:
陈丽莉
时间:
2013-4-7 20:44
若还有问题,继续追问; 没有的话,请将帖子分类改成【已解决】~
作者:
HM何伟
时间:
2013-4-7 21:31
学了后面的,忘了前面的了,哎.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2