Week6

一、Java中的访问控制修饰符及其访问权限

        1.private

                Java语言中对访问权限限制的最窄的修饰符,只有本类可以访问。

        2.public:

                属性和方法可以被所有类访问。

        3.protected:

                介于public 和 private 之间的一种访问修饰符,包中的类和不同包的子类可以访问。

        4.默认(default):

                包中的类可以访问。

在这里插入图片描述

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

        

class FighterPlane {
	private String name;
}

public class RunPlane extends FighterPlane{
	private void init() {
		name = "苏 35";
	}
	public static void main(String args[]) {
		RunPlane fp = new RunPlane();
		fp.init();
	}
}

        name=“苏 35”这一行会报错,报错信息:The field FighterPlane.name is not visible.

        如果将FighterPlane中name前的修饰符改为其他则不会报错。

        只有从父类继承的private属性和方法是不可见的。

三、组合及其作用

        java代码复用的一种方法。组合即把一个类当成另一个类的组合成分,从而允许新类直接复用该类的public方法。

class FighterPlane{
    String name;
    int missileNum;
    public FighterPlane(String _name,int _missileNum){
        name=_name;
        missileNum=_missileNum;
    }
    public void fire(){
        if(missileNum>0){
            System.out.println("now fire a missile!");
            missileNum-=1;
        }
        else{
            System.out.prtinln("No missile left");
        }
    }
}
class A{
    FighterPlane fp;
    public A(FighterPlane fpp){
        this.fp=fpp;//A对象有了FighterPlane对象的引用
    }
    public void invoke(){
        //A对象发送消息给FighterPlane的对象
        System.out.println(fp.name);
    }
}
public class Run{
    public static void main(String[] args){
        FighterPlane ftp=new FighterPlane("su35",10);
        //产生A对象,并将ftp作为对象引用传入
        A a = new A(ftp);
        //发送消息,产生调用关系
        a.invoke();
    }
}

        不破坏封装,整体类与局部类之间松耦合,彼此相对独立且具有更好的可扩展性。

四、重载及其作用

  1. 在同一个类中
  2. 方法名相同,修饰符列表、返回值类型一致
  3. 参数列表不同(个数、类型、顺序不同)

        只要同时满足以上3个条件,那么我们可以认定方法和方法之间发生了重载。

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

        不用为了对不同的参数类型或参数个数,而写多个函数。多个函数用同一个名字,但参数表,即参数的个数或(和)数据类型可以不同,调用的时候,虽然方法名字相同,但根据参数表可以自动调用对应的函数。

五、覆写及其作用、覆写父类方法的条件

        子类对父类参数相同、返回类型相同的同名方法重新进行定义,这种多态被称为覆写。如果子类定义的方法与父类名称相同,但参数名称不同,则不是覆写,而是重载。

        被覆写的方法不能有比父类更严格的访问控制全权限。在父类中若是用private声明的方法,该方法不能被子类所覆写。 

        同名的static方法和非static方法不能互相覆盖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值