实训第三次作业(仅供参考)

1.编写一个既有重写又有重载的程序。

程序如下:

public class MethodOverloading {

              void receive(int d) {

         System.out.println("Received one int data");

         System.out.println("i="+d);

              }

               void receive(float f) {

         System.out.println("Received one float data");

         System.out.println("f="+f);

              }

}

public class MethodOverwriting extends MethodOverloading{

       void receive(String string){

           System.out.println("Received one String data");

           System.out.println("m="+string);

       }

       public static void main(String[] args){

           MethodOverwriting mo=new MethodOverwriting();

           mo.receive("123");

       }

}

 

2.编写一个声明为protected修饰的成员变量,在不同的包中能访问该成员变量

程序如下:

package hW;

public class TestProtect {

    protected int Tp;

}

 

package hW1;

import hW.TestProtect;

 

public class TestProtect1 extends TestProtect {

    public void send(int Tp1){

       Tp=Tp1;

       System.out.println("Tp="+Tp1);

    }

    public static void main(String[] args) {

       TestProtect1 TP=new TestProtect1();

       TP.send(2);

    }

}

 

 

3.什么是单例模式,如何使用单例模式,编写一个使用单例模式的程序。 

 

答:单例模式是一种创建型模式,我们需要写一个类,而这个类只能产生一个实例,这个实例在全局被所有的类都能够调用到, 这时候就用到单例模式。

程序如下:

public class Singleton {

    private Singleton(){    

    }

    private static final Singleton instance=new Singleton();

    public static Singleton getInstance(){

       return instance;

    }

}

 

 

4.简述构造器的运行机制。

答:首先要注意的是的构造器并不是函数,所以他并不能被继承,这在我们extends的时候写子类的构造器时比较的常见,即使子类构造器参数和父类的完全一样,我们也要写super就是因为这个原因。
构造器的修饰符比较的有限,仅仅只有public private protected这三个,其他的例如任何修饰符都不能对其使用,也就是说构造器不允许被成名成抽象、同步、静态等等访问限制以外的形式。
因为构造器不是函数,所以它是没有返回值的,也不允许有返回值。但是这里要说明一下,构造器中允许存在return语句,但是return什么都不返回,如果你指定了返回值,虽然编译器不会报出任何错误,但是JVM会认为他是一个与构造器同名的函数罢了,这样就会出现一些莫名其妙的无法找到构造器的错误,这里是要加倍注意的。 
Java
在构造实例时的顺序

构造的粗略过程如下
1
、分配对象空间,并将对象中成员初始化为0或者空,java不允许用户操纵一个不定值的对象。
2
、执行属性值的显式初始化(这里有一点变化,一会解释,但大体是这样的)
3
、执行构造器
4
、将变量关联到堆中的对象上

 

5.编写一个构造器间互相调用的程序。

程序如下:

public class Professor {

     String name;

     int number;

     int age;

    public Professor(String name,int number){

       this.name=name;

       this.number=number;

       System.out.println("姓名:"+name+"/n"+"号码:"+number);

    }

    public Professor(String name,int number,int age){

       this(name,number);

       this.age=age;

       System.out.println("年龄"+age);

      

    }

    /**

     * @param args

     */

    public static void main(String[] args) {

       new Professor("s",123,30);

    }

 

}

 

6.编写一个父子类之间构造器调用的程序。

程序如下:

public class Professor {

    public Professor(String name,int number){

       System.out.println("姓名:"+name+"/n"+"号码:"+number);

    }

    /**

     * @param args

     */

    public static void main(String[] args) {

       new Professor("s",123);

    }

 

}

public class OldProfessor extends Professor {

    public OldProfessor(String name, int number,int age) {

       super(name, number);

       System.out.println("年龄"+age);

    }

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       new OldProfessor("m",321,45);

    }

 

}

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值