欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java第五章作业

程序员文章站 2022-04-02 23:04:51
...

1、 Java的访问控制修饰符有哪些?各有什么访问权限?请对照第7页ppt的表格分别写程序验证。

public(接口访问权限)
protected(包访问权限、继承访问权限)
“默认”(包访问权限)
private(无法直接访问)
java第五章作业
java第五章作业
访问权限首先看类前的修饰符,再看属性和方法前的修饰符。

首先在com.resource包内建立FighterPlane类,

package com.resource;
public class FighterPlane{
    public String name;
    protected int missileNum;
    public void fire(){
        if(missileNum > 0){
            System.out.println("Now fire a missile!");
            missileNum -= 1;
        } else {
            System.out.println("No missile left!");
        }
    }
}

然后在com.run包内定义RunPlane类,并调用FighterPlane类

package com.run;

import com.resource.*;

public class RunPlane {
    public static void main(String[] args){
        FighterPlane fp = new FighterPlane();
        fp.name = "苏35";
        fp.missileNum = 10; // The field FighterPlane.missileNum is not visible
        fp.fire();
    }
}

2、子类对于从父类继承的哪些属性与方法是可见的?请分别写程序进行验证。

子类继承了父类的所有属性和方法, 但只有public、protected的属性和方法在子类是可见的。

举例如下:

class Plane{
   public String publicName = "Plane";
   protected String protectedName = "Plane";
   private String privateName = "Plane";
}

class SonPlane extends Plane{
}

public class Test{
   public static void main(String[] args){
      SonPlane sp = new SonPlane();
      System.out.println(sp.publicName);
      System.out.println(sp.protectedName);
      System.out.println(sp.privateName); // The field Plane.privateName is not visible
   }
}

3、什么是组合?有什么作用?请举例说明。

把一个类当成另一个类的组合成分,从而允许新类直接复用该类的public方法,用以实现新类的功能,用户看到的是新类的方法,而不能看到被组合对象的方法,通常在新类里使用private修饰被组合的旧类对象。
相比于继承,组合的方式更加灵活,不需要继承父类的全部内容。

class Plane{
   String name = "Plane";
   void changeName(String n){
      this.name = n;
   }
}

class UsePlane{
   Plane p = new Plane();  // 这里即体现了组合,在UsePlane中使用Plane对象引用
   void changeName(String n){
      p.changeName(n);
      System.out.println("New name is "+p.name);

   }
}

public class Test{
   public static void main(String[] args){
      UsePlane up = new UsePlane();
      up.changeName("HAHA");
   }
}

4、什么是重载?有什么作用?请举例说明。

多态是指一个程序中同名的不同方法共存的情况,重载是多态的一种机制。
重载时,方法名称相同,参数类型或个数不同。使用相同的方法名来表示功能相同的多个方法。

举例如下:

public class Test {
   public void print(){
       System.out.println("no args");
   }

   public void print(int a){
       System.out.println("args int");
   }   

   public String print(int a, String s){
       System.out.println("args String");
       return "int String";
   }   

   public static void main(String[] args){
       Test t = new Test();
       t.print();
       t.print(1);
       System.out.println(t.print(1,"test3"));
   }
}

结果输出为:

no args
args int
args String
int String

5、 什么是覆盖?有什么作用?请举例说明。

覆盖是多态的另一种机制。
子类对父类的同名方法覆盖时,方法名称相同,参数相同,返回类型相同,对方法的内容重新进行定义。
覆盖一个方法可以对其重写来实现不同的功能,例如对接口方法的实现,在接口中一般只是对方法进行了声明,在实现时,就需要覆盖接口声明的所有方法。

举例如下

class Plane{
   public void print(){
      System.out.println("Plane!");
   }
}

class FighterPlane extends Plane{
   public void print(){
      System.out.println("FighterPlane");
   }
}

public class RunFighterPlane{
   public static void main(String[] args){
      FighterPlane fp = new FighterPlane();
      fp.print(); // 输出FighterPlane
   }
}

相关标签: Java课程作业