一个.java源文件中可以有多个类吗?(内部类除外)有什么条件?带着这个疑惑,动手建几个测试类,

揭开心中的疑惑。以下是解开疑惑过程:

package test;
/**
 * 一个.java源文件中可以有多个类吗?(内部类除外)有什么条件? 
 * 可以的   
 *但是只能有一个public类, 而且如果有public类的话,这个文件的名字要和这个类的名字一样。
 *如果都没有public类,名字可以不和这个类一样。
 */
public class MultiClass {
 int i = 0;
}

class B {
 String str = "b";
}

class C {
 String str = "c";
}  
/*源文件javac出多个class文件出来!是怎么回事?
1.   你在一个文件里定义了几个类的时候,会出现这种情况,比如   
  public   class   A   {}   
  class   B   {}   
  class   C   {}   
  这样每个   class   会是一个   .class     文件   
    
  2.   你定义了内部类的时候会出现这种情况,如   
  public   class   A   {   
          class   B   {   
          }   
  }   
  这会产生两个   class   文件,一个   A.class,一个   A$B.class   
    
  3.   使用了匿名类的时候出出现这种情况,如   
  public   class   A   {   
          void   xxx()   {   
                    button.addActionLisener(new   ActionListener()   {...});   
          }   
  }   
  这也会产生多个   class,一个   A.class,一个   A$1.class   
  }

*/

java文件允许有多个class,但是只能有一个用public修饰。因为java的编译机制是从这个public开始的。如果,你加的这个里面方法不是public static void main(),编译机制就会出错了。而且,你加的这个public的class名必须是你java文件的文件名,否则也无法编译。
package testclass;

public class classone {

    public static void main(String[] args) {
Test tes=new Test();
Test.innertest inner=tes.new innertest();
inner.names(); System.err.println("main");
tes.name();
}
}
class Test{
public class innertest{
public void names()
{
System.err.println("test");
}
}
public void name() {
System.err.println("Test");
}
}

面试小结(java基础)的更多相关文章

  1. 一份最贴近真实面试的Java基础面试题

    这是一份Java基础知识的面试题.在网上的关于Java的面试题数不胜数,但认真看过感觉大多数都没有实用性,有很多是面试官根本就不会问到的,那些已经脱离了实际开发的技术问题.而这份资料来源自一份个人觉得 ...

  2. 【Java面试】java基础篇

    总结个人的面试经历以及一些网上的的面试题,以供以后面试与巩固java基础. 1.String.StringBuilder和StringBuffer的区别 String用于存储不可变字符串的类,Stri ...

  3. 【JavaEE】企业面试问题-Java基础

    1. Java基础部分   1.1 Java中的方法覆盖(Overwrite)和方法重载(Overloading)是什么意思? 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的 ...

  4. Java面试17|Java基础

    Linux上配置Java基础环境: https://www.cnblogs.com/kerrycode/archive/2015/08/27/4762921.html 1.final相关 (1)fin ...

  5. Java面试系列--java基础

    Java基础总结 JAVA中的几种基本数据类型是什么,各自占用多少字节. 八大基本数据类型,byte:8位,short:16位,int:32位,long:64位,float:32位,double:64 ...

  6. java面试:java基础、Io、容器

    1.java基础 1.JDK 和JRE有什么区别 ​ JDK:java开发工具包,java开发运行环境.包含了JRE. ​ JRE:java运行环境,包含java虚拟机,java基础类库. 2.jav ...

  7. [Java面试二]Java基础知识精华部分.

    一:java概述(快速浏览): 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名 ...

  8. Java面试之Java基础问题答案口述整理

    Java面试之基础问题答案口述整理 面向对象的理解 面向对象思想就是在计算机程序设计过程中,把具体事物的属性特性和行为特征抽象出来,描述成计算机事件的设计思想.它区别于面向过程的思想,强调的是通过调用 ...

  9. 面试2——java基础2

    11.MVC设计模型 mvc设计模型是一种使用model-view-controller(模型-视图-控制器)设计创建web应用程序的模式.是一种开发模式,好处是可以将界面和业务逻辑分离. model ...

  10. 面试2——java基础1

    1.int和Integer的区别 1.Integer是int的包装类,int则是java的一种基本数据类型 2.Integer变量必须实例化后才能使用,而int变量不需要 3.Integer实际是对象 ...

随机推荐

  1. 找出数组中出现次数超过一半的数,现在有一个数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数

    找出数组中出现次数超过一半的数,现在有一个数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数 #include<iostream>using namespace s ...

  2. shared pool详解

    共享池shared pool的概念用户提交的命令:解析.执行用户命令的解析解析的过程是一个相当复杂的过程,它要考虑各种可能的异常情况比如SQL语句涉及到的对象不存在.提交的用户没有权限等等而且还需要考 ...

  3. jQuery选择器总结 转

    jQuery选择器总结 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 3 ...

  4. ecshop判断搜索引擎是否为蜘蛛

    <?php /** * 判断是否为搜索引擎蜘蛛 * * @access public * @return string */ function is_spider($record = true) ...

  5. llvm學習(二)————llvm編譯與環境構建

    本文由博主原创,转载请注明出处(保留此处和链接): IT人生(http://blog.csdn.net/robinblog/article/details/17339027) 在2011十月份的时候, ...

  6. 【设计模式 - 14】之命令模式(Command)

    1      模式简介 命令模式的定义: 命令模式将命令封装成对象,从而使调用一个命令变为调用一个对象的指定方法. 命令模式的优点: 1)        降低了系统耦合度: 2)        新的命 ...

  7. oracle正则截取字符串的函数

    现在有这么一个需求, 数据库中的一个手输的'籍贯'字段,要按一定的规范截取显示在报表上,比如,如果'籍贯'的内容是:'山东省潍坊市昌乐县', 那么报表里要显示为:'山东昌乐', 如果'籍贯'是山东省潍 ...

  8. 谈一下怎样设计Oracle 分区表

    在谈设计Oracle分区表之间先区分一下分区表和表空间的个概念: 表空间:表空间是一个或多个数据文件的集合,全部数据对象都存放在指定的表空间中,但主要存放表,故称表空间. 分区表:分区致力于解决支持极 ...

  9. PHP拦截器的使用(转)

    PHP有如下几个拦截器: 1.__get($property)功能:访问未定义的属性是被调用2.__set($property, $value)功能:给未定义的属性设置值时被调用3.__isset($ ...

  10. mac skim 修改背景色

    defaults write -app skim SKPageBackgroundColor -array 0.78 0.93 0.80 1