2016.9.13小结
1、访问修饰符有哪些?各自的作用范围是什么?
private:只有该类可以访问。
public:该类或非该类均可以访问。
protect:该类及其子类的成员可以访问,同一个包中的类也可以访问。
默认:相同数据包中的类可以访问。
2、什么是封装?封装有什么特点?
封装:按照信息隐藏的原则,将数据组织在一起。
特点:1、信息隐藏 2、信息集合
3、私有属性(private)加get、set方法和公有属性有什么区别?
1、私有属性不能直接访问,只有通过公有的get方法和set方法取值或者设值。一旦删掉get/set方法,可以直接将该属性做成只读或只写属性,而公有属性做不到。
2、可以通过修改器在设置属性时,做数据合法性的验证,但公有属性做不到。
4、静态块在什么时候执行?执行几次?
静态块在类加载时执行,也就是在产生对象之前产生对象之前执行。只执行一次
5、什么是内部类?内部类产生的class文件命名规则是怎样的?
内部类:在一个类中再定义一个类。内部类相当于外部类的属性,内部类的产生必须依赖于外部类的对象
内部类产生的class文件命名规则:外部类类名$内部类名.class
6、什么是多态?
多态:允许一个父类变量引用子类对象,允许一个接口类型变量引用实现类对象,反过来却不行。
7、说出代码执行结果 XXX yyy
public class X{
public X(){
System.out.println("XXX");
}
}
class Y extends X{
public Y(){
System.out.println("yyy");
}
public static void main(String[] aa){
Y y = new Y();
}
}
8、说代码执行结果 static father child father child
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();
}
}
9、class Super{
protected float getNum(){return 3.0f;}
}
public class Sub extends Super{
//Here
}
下面哪些代码可放在Here处 c、d、e
a) float getNum(){return 4.0f;} //默认类型范围小于protected
b) public void getNum(){} //不可以放入,既不是重写又不是重载
c) private void getNum(double d){} //重载
d) public double Getnum(){return 4.0d;} //字母大写
e) public float getNum(){return 9;} //重写
10、有一个文件S.java。
public class S {
}
class A{
public class B{
}
}
当编译S.java时,会产生几个class文件,分别是什么?
3个 S.class A.class A$B.class
11、有这样两个类
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
12、class Base{}
public class Child extends Base{
static byte b1=2;
static byte b2=2;
static int i = -1;
static double d = 10.1;
public static void main(String argv[]){
Child m = new Child();
Base b = new Base();
//Here
}
}
下面哪些代码,当被插入//here所指地方时,编译和运行不会出错 1) 3)
1) b=m;
2) m=b;
3) d =i;
4) b1 =b1+b2;//两个整数相加,结果至少是int类型,但是 b1+=b2 是可以的等价于b1=(byte)(b1+b2)