Java第四次作业

Java第四次作业,第1张

Java第四次作业

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

①public(公共访问权限)

②protected(包访问权限、继承访问权限)

③无访问控制符修饰(包访问权限)

④private(类内部访问权限)

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

      public和protected

①public

class FighterPlane1{
    public int y=3;
    public void shuchu(){
        System.out.println("洛熙熙");
    }
}

class FighterPlane2 extends FighterPlane1{

}

public class RunPlane{
    public static void main(String args[]){
        FighterPlane2 fpp=new FighterPlane2();
        System.out.println("y的值为:"+fpp.y);
        fpp.shuchu();
    }
}

在这里子类继承了父类中的public属性的y和shuchu函数,结果为:

y的值为:3
洛熙熙

②protected

class FighterPlane1{
    protected int y=3;
    protected void shuchu(){
        System.out.println("洛熙熙");
    }
}

class FighterPlane2 extends FighterPlane1{

}

public class RunPlane{
    public static void main(String args[]){
        FighterPlane2 fpp=new FighterPlane2();
        System.out.println("y的值为:"+fpp.y);
        fpp.shuchu();
    }
}

在这里子类继承了父类中的protected属性的y和shuchu函数,结果为:

y的值为:3
洛熙熙

③private

若将y和shuchu函数的属性改为private,则结果会出现:

java: y 在 FighterPlane1 中是 private 访问控制

说明子类对于从父类继承的private属性与方法是不可见的。

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

定义:组合(Composition)指的是一个类的属性含有一个另一个类的引用,可以体现整体与部分、拥有的关系。

作用:实现类的复用

//端点
public class Point   { 
  private int x,y;
  public Point(int x,int y)  {
      this.x = x;
      this.y = y;
      }  
  public int GetX() { return x; }  
  public int GetY() { return y; }
  }

//线段
class Line    {  
    private Point p1,p2;   //两端点  
    Line(Point a, Point b)  {    
        p1 = new Point(a.GetX(),a.GetY());    
        p2 = new Point(b.GetX(),b.GetY());  
        }
    }

4. 什么是重载?有什么作用?请构造各种重载示例。      

定义:重载就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者重载方法。

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

public class OverloadDemo {
 
    //1. test()方法第一次重载,没有参数
    void test() {
        System.out.println("No parameters");
    }
    //2. test()方法第二次重载,一个整型参数
    void test(int a) {
        System.out.println("a: " + a);
    }
    //3. test()方法第三次重载,两个整型参数
    void test(int a, int b) {
        System.out.println("a and b: " + a + " " + b);
    }
    //4. test()方法第四次重载,一个双精度型参数
    double test(double a) {
        System.out.println("double a: " + a);
        return a * a;//返回a*a的值
    }
}
public class Overload {
   public static void main(String args[]){
        OverloadDemo ob=new OverloadDemo();
        double result;
        ob.test();            //定义的是test()方法
        ob.test(10);             //定义的是test(int a)方法
        ob.test(10,20);            //定义的是test(int a,int b)方法
        result=ob.test(123.23);       //定义的是test(double a)方法
        System.out.println("result of ob.test(123.23): "+result);   //输出result的值
   }
}

运行结果为:

运行结果:    No parameters
a: 10
a and b: 10 20
double a: 123.23
result of ob.test(123.23): 15185.6329

5. 什么是覆写?有什么作用?覆写父类方法的条件有哪些?请举例说明。

定义:在子类之中有可能定义和父类完全相同的方法或属性的名称。

作用:对功能进行复用和扩充

条件:

①子类的访问修饰符权限应等于或大于父类,不能变小

②子类的返回类型能够向上转型成为父类的返回类型

③异常也要能向上转型为父类的异常

④方法名、参数类型及个数必须严格一致

⑤只能针对非静态、非final、非构造方法

class Person {
    public void fun()
    {
        System.out.println("好好学习。");
    }
}
class Student extends Person{
    //方法覆写
    public void fun()
    {
        System.out.println("天天向上。");
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/3981665.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-21
下一篇 2022-10-21

发表评论

登录后才能评论

评论列表(0条)

保存