1.Java的访问控制修饰符有哪些?各有什么访问权限?
public:公共访问权限
protected:包访问权限、继承访问权限
无修饰符:包访问权限
private:类内部访问权限
| 类前修饰符 | public | 缺省 |
|---|---|---|
| 类属性或成员方法 | ||
| public | 所有类 | 包中类 |
| protected | 包中的类或包中和所有子类 | 包中类 |
| 无访问控制符 | 包中类 | 包中类 |
| private | 本类 | 本类 |
2.子类对于从父类继承的那些属性与方法是可见的?
在同一包里public和protected和无修饰符的是可见的,private的不可见;
在不同包里public和protected是可见的,无修饰符的和private不可见;
public class demo{
public demo(){
System.out.println("构造");
}
public void A(){
System.out.println("public");
}
protected void B(){
System.out.println("protected");
}
void C(){
System.out.println("null");
}
private void D(){
System.out.println("private");
}
}
public class test2 extends demo {
public static void main(String[] args) {
test2 a=new test2();
a.A();//可见
a.B();//可见
a.C();//同包可见,不同包不可见
a.D();//不可见
}
}
3.什么是组合?有什么作用?
组合是一个类获得其它类的对象的用法,比如在类A中用类B的对象:
public class A{
public B b;
}
作用是使A类在不用继承的情况下可以使用B类的属性和方法
4.什么是重载?有什么作用?
重载(overloading)是在一个类里面的名字相同但是参数不同或返回类型不同的方法
每个重载的方法都必须有一个独一无二的参数类型列表,
重载规则:
被重载的方法必须改变参数列表(参数个数或类型不一样);
被重载的方法可以改变返回类型;
被重载的方法可以改变访问修饰符;
被重载的方法可以声明新的或更广的检查异常;
方法能够在同一个类中或者在一个子类中被重载;
无法以返回值类型作为重载函数的区分标准;
public class Test {
public int test(){
System.out.println("t1");
return 1;
}
public String test(String a){
System.out.println(a+"t2");
return a+"test";
}
public int test(int n){
System.out.println(n+"t3");
return n+1;
}
public static void main(String[] args) {
Test t=new Test();
t.test();
t.test(1);
t.test("ABC");
}
}
重载可以使一个语句实现多个功能;
5.什么是覆写?有什么作用?覆写父类方法的条件有哪些?
覆写(Override)也叫重写,是子类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。
重写的好处在于子类可以根据需要定义特定属于自己的方法。
覆写父类方法的条件有:
参数列表与被重写方法的参数列表必须完全相同。
返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类;
覆写方法的访问修饰符的级别不能低于父类的方法的;
final的方法 不可以被覆写;
static的方法不能覆写;
子类和父类在同一个包中可以覆写除final与private的方法;
不在同一个包中只能覆写非final的public和protected方法;
构造方法无法覆写;
public class father {
public int test(int n){
return n+1;
}
}
class son extends father{
public int test(int n){
return n+2;
}
public static void main(String[] args) {
son a=new son();
int n=a.test(3);
System.out.println(n);
}
}



