首页 > 技术文章 > Java之再初识四

hzau-xpgao 2020-10-20 20:48 原文

本篇文章将从以下几个方面继续了解JAVA

一、JAVA的访问控制修饰符有哪些及其访问权限

二、子类对于从父类继承的哪些属性与方法是可见的

三、什么是组合,组合有什么作用

四、什么是重载,重载有什么作用

五、什么是覆盖,覆盖有什么作用

 

问题一: 

       访问权限   类          包          子类            其他包

 

        public      ∨             ∨             ∨              ∨    (对任何人都是可用的)

 

        protect     ∨            ∨             ∨               × (继承的类可以访问以及和private一样的权限)

 

        default     ∨             ∨            ×                × (包访问权限,即在整个包内均可被访问)

 

        private     ∨              ×            ×                × (除类型创建者和类型的内部方法之外的任何人都不能访问的元素)

举例:

不同包中,public为访问修饰符。

package com.run;
public class  FightPlane {
        private String name;
        private int Num;
        private static FightPlane fp;
        private FightPlane (String _name, int _Num) {
                name=_name;
                Num=_Num;
        }
        public static FightPlane getInstance(String _name, int _Num) {
                if(fp==null)
                {
                        fp=new FightPlane(_name, _Num);
                }
                return fp;
        }
}
package com.resource;
import com.run.FightPlane;
public class RunPlane {
        public static void main(String[] args) {
                FightPlane fp;
                fp=FightPlane.getInstance("苏-35", 6);
                fp.fire();
        }

}

此时,RunPlane类可以访问FightPlane 中的方法,但不能访问FightPlane中的属性。

如果将FightPlane中的方法的访问修饰符public改为protected或者private,则不能访问。

由于两个类不在一个包中,故不能访问。

 

问题二:

子类从父类继承的public和protected方法和属性是可见的,而private方法和属性不可见

 

class A{
    private int num1;
    public int num2;
    protected int num3;
    public void  f1(){

    }
     private void f2(){

    }
    protected void f3(){

    }
}
class B extends A{


}

 

B类从A类继承的方法f1,f3和属性num2,num3是可见的。

问题三:

组合:某个类的对象是另一个类的成员 

作用:组合会使对象之间的耦合性较为松散,因而,消息和内部私有方法之间就没有直接联系,这就为阻断变化在软件系统内的传播提供了可能。

问题四:

继承:通过extends关键字实现,子类继承了父类所有的方法和属性,但只有public和protected在子类中是可见的

作用:继承提供了软件复用功能,通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。

问题五:

覆盖:子类与父类参数相同,返回类型相同的同名方法重新进行定义

作用:增加额外功能。

 

本篇博客较为简略,如愿补充,敬请私戳。

 

 

 

 

 

 

 

 

推荐阅读