在外部类中定义内部类,我们可以认为内部类是外部类的一些域和方法的集合,而内部类也可以访问外部类的域和方法。还是以上篇代码为为了,稍微修改一下。
package Thinking;
public class InnerAccess{
private int i;
private String name;
public InnerAccess(int i,String name){
this.i=i;
this.name=name;
}
public void getmsg(){
System.out.println("outer");
}
public int geti(){
return i;
}
public String getname(){
return name;
}
public class Inner{
private int i;
private String name;
public Inner(int i,String name){
this.i=i;
this.name=name;
}
public void getmsg(){
InnerAccess.this.getmsg();
System.out.println(InnerAccess.this.name+":"+InnerAccess.this.i);
System.out.println(InnerAccess.this.getname()+":"+InnerAccess.this.geti());
System.out.println("inner");
System.out.println(name+":"+i);
System.out.println(getname()+":"+geti());
}
public int geti(){
return i;
}
public String getname(){
return name;
}
}
public static void main(String[] args){
InnerAccess access=new InnerAccess(1,"hust");
Inner inner=access.new Inner(2,"wang");
inner.getmsg();
}
}
//output
outer
hust:1
hust:1
inner
wang:2
wang:2
内部类中的所有域和所有方法都覆盖了外部类的域和方法,在内部类中要访问外部类的域和方法时,需要不同的调用方式。如InnerAccess.this.域和InnerAccess.this.方法,这是内部类访问外部类被覆盖的域和方法的机制。
分享到:
相关推荐
内部类的作用域仅限于其外部类,可以访问外部类的成员,同时又能保护类的封装性。 目标: 通过这个源码资源,你将学会以下内容: - 内部类的定义和语法 - 如何在外部类中访问和操作内部类 - 不同类型的内部类(静态...
- B:外部类无法直接访问局部内部类,因为局部内部类只在其定义的方法作用域内可见。 4. **内部类的分类**: - **成员内部类**:分为实例内部类和静态内部类。 - **局部内部类**:定义在方法内部的临时类,不...
非静态内部类拥有对外部类的引用,可以直接访问外部类的所有成员,包括私有成员。而静态内部类不持有对外部类的引用,因此只能访问外部类的静态成员。 2. **内部匿名类**:内部匿名类没有名字,通常用于创建一次性...
成员内部类可以访问外部类的所有成员,包括私有成员和静态成员。创建成员内部类的实例需要先创建外部类的实例,如 `(new Outerclass()).new Innerclass();`。在内部类中访问外部类的成员可以使用 `Outerclass.this` ...
Java内部类是指定义在另一个类内部的类,它可以访问外部类的属性和方法。在Java中,内部类提供了更精细的控制,可以使得类的封装性更强,设计更为隐蔽和安全。以下是对标题中"Java内部类.pdf"文件的知识点进行的详细...
- **局部内部类**:定义在方法、构造器或块中的类称为局部内部类,它的作用域仅限于该方法、构造器或块。 - **匿名类**:没有名字的内部类,通常用于一次性实现某个接口或父类的简单功能。 2. **内部类继承** - ...
- 成员内部类:作为外部类的成员,与外部类的字段和方法并列存在。它可以访问外部类的所有成员,包括私有成员。成员内部类不能包含静态成员,但可以访问外部类的静态成员。 - 局部内部类:定义在方法或代码块内部...
- **更精细的访问控制**:内部类可以访问外部类的私有成员,这提供了更精细的封装和数据隐藏能力。 #### 三、示例解析 在提供的代码片段中,`JobIterator1.java`展示了内部类的实际应用。其中`Employee`类包含了一...
3. 内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量。 4. 外部类不能直接访问内部类的成员,但可以通过内部类对象来访问。 二、内部类的分类 1. 成员内部类:即...
- 当实例内部类与外部类有相同名称的变量或方法时,会存在隐藏现象,需要通过`外部类.this`来访问外部类的成员。 3. **静态内部类的特点** - 静态内部类不依赖于外部类的实例,可以直接通过外部类的类名来创建它...
3. 使用限制:静态内部类无法直接访问外部类的非静态成员,局部内部类和匿名内部类的作用域有限。 总结,Java内部类是一种强大的工具,能够帮助我们更好地组织代码、实现复杂的逻辑和接口。但使用时也需谨慎,避免...
成员内部类(也称为非静态内部类)是定义在一个外部类中的成员类,它可以访问外部类的所有成员变量和方法,包括私有成员。成员内部类的一个显著特点是它与外部类有着密切的联系,这使得它非常适合用来表达一种“整体...
成员内部类可以直接访问外部类的所有成员,包括私有成员。这是因为成员内部类对象在外部类对象内部创建,它们之间有隐含的引用关系。这种类通常用于实现特定的逻辑或者封装与外部类紧密关联的数据。 3. **局部内部...
- 内部类可以直接访问外部类的所有成员,包括私有成员,这是内部类的一个重要特性,可以用于实现紧密耦合的组件。 6. **内部类的实例化**: - 创建内部类的实例需要外部类的实例引用,对于非静态内部类,语法为 `...
内部类可以访问外部类的所有成员,包括私有成员,这使得内部类在实现某些特定设计模式时非常有用。本篇文章将深入探讨Java中的四种内部类:实例内部类、局部内部类、匿名类和静态内部类,并通过实例代码进行详细解析...
- 静态内部类可以访问外部类的所有静态成员,包括私有静态成员。 - 它不能直接访问外部类的非静态成员,但可以通过创建外部类的对象来间接访问。 **3. 使用场景** - **节省命名空间**:当需要定义多个紧密相关的类...
- **访问外部类的成员**:内部类可以直接访问外部类的私有成员,这是内部类的一大特点,可以用来封装数据和实现更复杂的设计。 - **实现多态**:内部类可以实现接口,从而创建多重继承的效果,尽管Java不支持类的...
成员内部类就像普通的类成员,可以是静态的或非静态的,它可以访问外部类的所有成员,包括私有成员。这种类型的内部类可以在类的任何地方实例化,只要外部类的对象已经存在。通过外部类的对象,我们可以创建内部类的...
成员内部类,顾名思义,就像类的其他成员(如字段和方法)一样,存在于类的主体中。成员内部类可以直接访问外部类的所有成员,包括私有成员。例如: ```java public class OuterClass { private int outerField = ...
实例内部类是成员内部类的一种,它没有static修饰符,这意味着每个外部类的实例都可以有自己的实例内部类对象,且实例内部类的对象可以访问外部类的实例变量和方法。在`A`类的`B`内部类示例中,`B`可以直接访问`A`的...