1、访问修饰符有哪些?各自的作用范围是什么?
public 同一类中;同一包中的其他类;不同包中子类;该类及非该类都可访问。
protected 同一类中;同一包中的其他类;不同包中子类。
private 同一类中。
什么也不写,默认的同一类中,同一包中其他类。 
2、什么是封装?封装有什么特点?
封装;按照信息隐藏原则,将数据组织在一起。
封装两个特点:信息的隐藏和信息的集合。
3、私有属性(private)加get、set方法和公有属性有什么区别?
加get/set对属性进行访问和设置,可以通过去掉get/set方法,将属性做成只读和只写属性。公有属性
做不到,也可以对赋值的属性进行合法性的验证,从而保证了属性值的合法性,公有属性做不到。
4、静态块在什么时候执行?执行几次?
静态块在类加载时执行,只执行一次,执行在对象产生之前,一般用于初始化静态变量和静态方法。
5、什么是内部类?内部类产生的class文件命名规则是怎样的?
在一个类中,再定义一个类就称为内部类,内部类相当于外部属性,内部类对象的创建,必须外部类
的对象。命名规范:外部类名$内部类名。
6、子类重写父类方法有什么限制?
f
方法重写只能发生在父子之间,子类的方法名和父类相同,参数列表相同,返回类型相同。
方法的修饰符必须大于或等于父类的方法。
7、什么是多态?多态主要的应用是什么?instanceof作用是什么?
允许一个父类变量引用子类的对象,允许一个接口类型变量引用
8、什么是抽象方法?什么是抽象类?
如果一个类只有定义没有具体的方法,那么久是抽象方法,用abstact
拥有抽象方法的类叫做抽象类,如果一个类继承抽象类,那么必须重新抽象类中所以抽象方法。
9、说代码执行结果
class  Father{   
	public  Father(){
	System.out.println("father"); 
	}
}
class Child extends Father{
	static{
	System.out.println("static");
	}
	public Child(){
	System.out.println("child"); 
	}
}
class Test{
	public static void main(String [] args){
	Child c = new Child();
	Child d = new Child();
	}
}
static 
father
child 
father
child
10、class Super{   
       protected float getNum(){return 3.0f;} 
   } 
  public class Sub extends Super{ 
       //Here
  }
下面哪些代码可放在Here处c d  e 
	
a)	float getNum(){return 4.0f;} //子类重写父类的方法,子类访问修饰符大于等于父类
b)	public void getNum(){}  //返回类型不同,不满足重写条件,不满足重载,编译错误
c)	private void getNum(double d){} //重载方法
d)	public double Getnum(){return 4.0d;} //不同的方法
e)	public float getNum(){return 9;}  //重写方法
	
11、有一个文件S.java。  
 	public class S { 
       
  }
	class  A{
	public class B{
	
	}
	}
当编译S.java时,会产生几个class文件,分别是什么?3个 s.class / b.class/ A$b.class
12、有这样两个类
class A{
	public void getX(int x){
		System.out.println("aaa");
	}
}
class B extends A{
	public void getX(int x,int y){
		System.out.println("bbb");
	}
}
class Test{
	public static void main(String[] args){
		B b = new B();
		b.getX(1);
	}
}
当执行Test时,输出什么结果。aaa 
13、JAVA代码查错
a、
abstract class Name { 
  private String name;
  public abstract boolean isStupidName(String name) {}//抽象方法必须已分号结束,不能加{},无论{}是否有
内容,都是具体方法。
}
b、  abstract class Something { 
  private abstract String doSomething ();//抽象方法不能申明为private和static(私有的,静态的)
}
c、public class Father{
    public Father(int x){
   }
}
class Child extends Father{//子类构建之前,必须通过super(),产生父类的对象,如果父类没有提供无参构造方法,必须显示调用。
    public Child(){
   }
}
d、public class Father{
    public void test(){
    }
}
class Child extends Father{
    public void speak(){
    }
}
class Test{
   public static void main(String[] args){//多态调用时,只能调用父类中定义的属性和方法,不能调用子类的属性和方法。
	Father f = new Child();
	f.speak();
   }
原文:http://www.cnblogs.com/YGZ-321/p/6792815.html