Java的访问控制修饰符有哪些?各有什么访问权限?
Java有许多访问控制修饰符,其中常用的有public,protected,private,friendly.
- private:
用 private 修饰的类成员,只能被该类自身的方法访问和修改,而不能被任何其他类(包括该类的子类)访问和引用。因此,private 修饰符具有最高的保护级别。 - friendly(默认)
如果一个类没有访问控制符,说明它具有默认的访问控制特性。这种默认的访问控制权规定,该类只能被同一个包中的类访问和引用,而不能被其他包中的类使用,即使其他包中有该类的子类。这种访问特性又称为包访问性。 - protected
用保护访问控制符 protected 修饰的类成员可以被三种类所访问:该类自身、与它在同一个包中的其他类以及在其他包中的该类的子类。使用 protected 修饰符的主要作用,是允许其他包中它的子类来访问父类的特定属性和方法,否则可以使用默认访问控制符。 - public
当一个类被声明为 public 时,它就具有了被其他包中的类访问的可能性,只要包中的其他类在程序中使用 import 语句引入 public 类,就可以访问和引用这个类。
子类对于从父类继承的哪些属性与方法是可见的?
除了private以外的所以属性与方法都是可见的,即public,protect,friendly都是可见的。
Java中什么是组合,有什么作用?
把一个类当成另一个类的组合成分,从而允许新类直接复用该类的public方法。不破坏封装,整体类与局部类之间松耦合,彼此相对独立且具有更好的可扩展性。
class A{…}
class B{A a
…
}
什么是重载?有什么作用?请举例说明。
在同一个类中,允许存在一个以上的同名方法, 只要它们
的参数个数或者参数类型不同即可。
方法重载特点:
与返回值类型无关, 只看方法名和参数列表
在调用时, 虚拟机通过参数列表的不同来区分同名方法
当有作用相似的函数,但参数或者返回值不同时,采用重载可以使我们有更好的,更容易的理解。
public static int sum(int a,int b) {
int c = a + b;
return c;
}
public static int sum(int a,int b,int c){
int d = a + b + c;
return d;
}
什么是覆盖?有什么作用?请举例说明。
如果在子类中定义一个方法,其名称、返回类型及参数签名正好与父类中某个方法的名称、返回类型及参数签名相匹配,那么可以说,子类的方法覆盖了父类的方法。
可以达到不更改父类的方法便创建了子类的一个方法。使程序更加的安全。
class phone1
{
public void call()
{
System.out.println
}
public void photo()
{
System.out.println(“version1 photo”);
}
}
class phone2 extends phone1
{
public void call()
{
System.out.println(“version2 call()”);
}
}