Java的访问控制修饰符有哪些?各有什么访问权限?

Java有四种访问权限, 其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符。
private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
default:即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。
protect: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。

子类对于从父类继承的哪些属性和方法是可见的?

子类不会继承父类的private方法, public, friendly, protected方法和属性都继承。

什么是组合?有什么作用?

组合就是把一个类当成另一个类的组合成分,从而允许新类直接复用该类的public方法。
作用:不破坏封装,整体类与局部类之间松耦合,彼此相对独立且具有更好的可扩展性。

class  A {
      FighterPlane  fp;
      public  A(Fighterplane fpp) {
      this.fp = fpp;
   }

什么是重载?有什么作用?

在类中定义了多个同名而不同内容参数的成员方法时,称这些方法是重载方法。
作用:大大简化啦的类调用者的代码,让我们感觉类有一种自动化调用的功能,而没有增加类创建的代码

class  Parent {
            public  int  getScore() {
            return 3;
            }
            public  int  getScore(int i) {
            return i;
            }
            }

什么是覆盖?有什么作用?

子类对父类参数相同、返回类型相同的同名方法重新进行定义,这种多态被称为覆盖。
作用:当我们开发时,原有的父类—A类功能已经不够强了,我们需要对他进行功能修改,但又不能改动他的代码,因此我们可以用B类继承A类,然后在B类中重写A类的功能方法,达到不修改A类就能改动A类功能的目的。

class phone1
{
    public void call()  
    {
        System.out.println("version1 call");
    }
    public void photo() 
    {
        System.out.println("version1 photo");
    }
}
 
class phone2 extends phone1
{
    public void call()  
    {
        System.out.println("version2 call()");
    }
}
 
public class Main {
    public static void main(String[] args)
    {
       phone2 p = new phone2(); 
        p.call();
    }
}