1、访问修饰符有哪些?各自的作用范围是什么?
protecte 本包中的类和不同包的子类可以访问。
private 只有在本类中访问,不能再别的类中访问。
public 该类或非该类均可访问。
默认,相同数据包中的类可以访问
2、什么是封装?封装有什么特点?
封装:按照信息隐藏的原则,将信息组织在一起。
封装有两个特点:1、信息集合 2、信息隐藏
protecte 本包中的类和不同包的子类可以访问。
private 只有在本类中访问,不能再别的类中访问。
public 该类或非该类均可访问。
默认,相同数据包中的类可以访问
2、什么是封装?封装有什么特点?
封装:按照信息隐藏的原则,将信息组织在一起。
封装有两个特点:1、信息集合 2、信息隐藏
3、私有属性(private)加get、set方法和公有属性有什么区别?
私有属性+get/set方法和公有属性的区别:
1、私有属性+get/set方法,可以通过删除get或set方法,将属性做成只读或者只写。但公有属性不行。
2、私有属性在设置属性值时,可以在set方法中加入属性有效性的验证,从而避免属性赋值为无效。但公有属性不行。
4、静态块在什么时候执行?执行几次?实例化块什么执行?
1、私有属性+get/set方法,可以通过删除get或set方法,将属性做成只读或者只写。但公有属性不行。
2、私有属性在设置属性值时,可以在set方法中加入属性有效性的验证,从而避免属性赋值为无效。但公有属性不行。
4、静态块在什么时候执行?执行几次?实例化块什么执行?
实例化快,每产生一个对象执行一次,在super()之后执行。
5、什么是内部类?内部类产生的class文件命名规则是怎样的?
内部类相当于外部类的属性,内部类对象的产生必须依赖于外部类对象。
6、什么是重写?子类重写父类的方法有什么要求?
子类重写父类的方法要求子类方法的访问修饰符要大于或等于父类方法访问修饰符。
5、什么是内部类?内部类产生的class文件命名规则是怎样的?
内部类相当于外部类的属性,内部类对象的产生必须依赖于外部类对象。
6、什么是重写?子类重写父类的方法有什么要求?
子类重写父类的方法要求子类方法的访问修饰符要大于或等于父类方法访问修饰符。
7、什么是多态?
多态:允许一个父类变量引用子类的对象,允许一个接口类型变量引用实现类对象。反过来却不行。
多态:允许一个父类变量引用子类的对象,允许一个接口类型变量引用实现类对象。反过来却不行。
8、说代码执行结果
class Father{
public Father(){
System.out.println("father");
}
}
class Child extends Father{
static{
System.out.println("static");
}
{
System.out.println("object");
}
public Child(){
System.out.println("child");
}
}
class Test{
public static void main(String [] args){
Child c = new Child();
Child d = new Child();
}
}
static
father
object
child
9、class Super{
protected float getNum(){return 3.0f;}
}
public class Sub extends Super{
//Here
}
下面哪些代码可放在Here处
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;} 可以,该方法重写父类方法。
//Here
}
下面哪些代码可放在Here处
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;} 可以,该方法重写父类方法。
10、有一个文件S.java。
public class S {
}
class A{
public class B{
}
}
public class B{
}
}
当编译S.java时,会产生几个class文件,分别是什么?
3 个
S.class \ A.class \ A$B.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);
}
}
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
aaa