class-java中关于内部类的问题

问题描述

java中关于内部类的问题
interface A
{
public void fun1();
}
class B
{
int i=10;
class C implements A
{
public void fun1()
{
System.out.println(i);
}
}
public void get(A a)
{
a.fun1();
}
public void test()
{
this.get(new C());
}
}
class TestNonameInner
{
public static void main(String [] args)
{
B b=new B();
b.test();
}
}

```我想问下这段代码运行时情况,怎么一步一步运行输出结果的?讲解详细一些。谢谢!

解决方案

前一段时间在CSDN论坛回答的一个问题,觉得蛮有意思的,决定拿出来在这里记录一下。?问题的提出:?该例子程序涉及到了三个class文件,分别是Contents.java,Destination.java,Parcel10.java。其中的Contents.java和Destination.java是两个interface,而Parcel10.java是含有静态内部类的一个类文件。 ......
答案就在这里:Java的内部类问题

解决方案二:
A是一个借口,C实现了fun1方法。
B b=new B();
b.test();//调用b的test方法

this.get(new C());//在test中调用get方法,创建一个C对象

public void get(A a)
{
a.fun1();//在这里由于多态,会调用C的fun1方法
}

System.out.println(i); //最终执行这个,输出10

时间: 2024-10-28 09:02:48

class-java中关于内部类的问题的相关文章

Java 中的内部类和匿名类

Java 内部类有什么好处?为什么需要内部类? 首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时候,你可以建一个内部类实现这个接口.由于内部类对外部类的所有内容都是可访问的,所以这样做可以完成所有你直接实现这个接口的功能. 不过你可能要质疑,更改一下方法的不就行了吗? 的确,以此作为设计内部类的理由,实在没有说服力. 真正的原因是这样的,java 中的内部类和接口加在一起,可以的解决常被 C++ 程序员抱怨 ja

全面了解Java中的内部类和匿名类_java

Java内部类(Inner Class),类似的概念在C++里也有,那就是嵌套类(Nested Class),乍看上去内部类似乎有些多余,它的用处对于初学者来说可能并不是那么显著,但是随着对它的深入了解,你会发现Java的设计者在内部类身上的确是用心良苦.学会使用内部类,是掌握Java高级编程的一部分,它可以让你更优雅地设计你的程序结构.下面从以下几个方面来介绍: 第一次见面 public interface Contents { int value(); } public interface

为什么说java中private内部类上转型为接口后可以隐藏内部类的实现?

问题描述 为什么说java中private内部类上转型为接口后可以隐藏内部类的实现? 学习java中 看到类的高级特性关于内部成员类这一章 出现这么一句话把我拦住鸟 读不太明白 还请大神解释一下 解决方案 1.private的内部类,只有他的外部类才能使用,并且只能使用生成对象, 2.如果你在这个外部类直接让这个private内部类上转型为接口,你在外面使用这个外部类的时候只能使用这个接口提供的功能了.

Java 中的内部类

什么是 Java 中的内部类 问:什么是内部类呢? 答:内部类( Inner Class )就是定义在另外一个类里面的类.与之对应,包含内部类的类被称为外部类. 问:那为什么要将一个类定义在另一个类里面呢?清清爽爽的独立的一个类多好啊!! 答:内部类的主要作用如下: 1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类 2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据 3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便

java中的内部类

在Java 1.1中,可将一个类定义置入另一个类定义中.这就叫作"内部类".内部类对我们非常有用,因为利用它可对那些逻辑上相互联系的类进行分组,并可控制一个类在另一个类里的"可见性".然而,我们必须认识到内部类与以前讲述的"合成"方法存在着根本的区别. 通常,对内部类的需要并不是特别明显的,至少不会立即感觉到自己需要使用内部类.在本章的末尾,介绍完内部类的所有语法之后,大家会发现一个特别的例子.通过它应该可以清晰地认识到内部类的好处. 创建内部类

深入解析Java中的内部类_java

概述 最近学习python,发现python是支持多继承的,这让我想起Java是通过内部类实现的这套机制.这篇文章不是讲如何通过内部类实现多继承,而是总结一下内部类的类型和使用方法. Java内部类分为:     非静态内部类     静态内部类     局部内部类     匿名内部类 内部类在Android源码中被大量的使用,先介绍一下这四种内部类的共同点:     内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号.     内部类不

整理java读书笔记十五之java中的内部类_java

内部类是指在一个外部类的内部再定义一个类.类名不需要和文件夹相同. *内部类可以是静态static的,也可用public,default,protected和private修饰.(而外部顶级类即类名和文件名相同的只能使用public和default). 前言  Java从JDK1.1的时候,就开始引入内部类的概念了,那么小编也通过这篇博客来分享一下Java中有关内部类的一些特性.  什么是内部类?  在很多情况下,类被定义成一个独立的程序单元,但是有时候也会把一个类放在另一个类的内部定义,这个定

java中的内部类详细总结_java

内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑.肢体.器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液.跳动) 显然,此处不能单方面用属性或者方法表示一个心脏,而需要一个类 而心脏又在人体当中,正如同是内部类在外部内当中 实例1:内部类的基本结构 复制代码 代码如下: //外部类 class Out {     private int age = 12;     //内部类     class In {      

java中关于内部类的使用详解_java

内部类访问规则 •内部类可以直接访问外部类中的成员,包括私有.访问格式:外部类名.this•外部类要访问内部类必须创建内部类对象.•内部类在成员位置上,可以被成员修饰符修饰. 复制代码 代码如下: public class InnerClassDemo1 {     public static void main(String[] args){         Outer ou =new Outer();         ou.method();// 4  3         Outer.Inn

java中关于内部类访问属性的问题

问题描述 解决方案 解决方案二:你这样写肯定不能访问了,即使要访问方法的变量,该变量最好加上final关键字解决方案三:加上final关键字就好了,但还是不会输出2解决方案四:如果要在内部类内访问方法的局部变量,这个变量必须被final修饰也就是必须finalStringinfo="2";刚刚测试了下,发现内部类的属性名称及内部类方法的局部变量名称不可以和外部类方法的局部变量重名,否则会覆盖掉外部类的方法的局部变量这个例子中就是值为3的info和值为4的info同时改名,然后给值为2的