JAVA作业3

1.简述重载(Overload)与重写(Override)的区别。

方法的重载:必须在同一类中,方法名相同,而参数列表不同(参数类型不同,参数个数不同,参数顺序不同);

  public class Person{

    String name;

    int age;

  public  Person(){

  }

  public Person(String name,int age){

   this.name=name;

   int age=age;

  }

  public Person(int age,String name){

  this.age=age;

  this.name=name;

  }

}

方法的重写:只存在于子类和父类之间,子类的方法名称、输入参数必须与父类一致,返回值类型兼容(子类方法的返回值类型是父类方法返回值类型的子类),权限不能比父类更严格。重写的前提是先继承父类的方法。

package override;   //父类


   public class Person {
       public Object getInfo(){
        System.out.println("Person父类的getInfo()方法");
         return "我是父类中的方法";
       }
    
    
       public  void makeMoney(){
      System.out.println("开工厂赚钱....");
       }
}

package override;//子类

public class Student extends Person{

@Override
    public String getInfo(){
    System.out.println("子类方法");
    return "学生的getInfo()方法";
    }

@Override
public void makeMoney(){
    System.out.println("开互联网公司赚钱....");
    }
    
}

package override;      //测试

   public class TestOverride {

     public static void main(String[] args) {
         Student stu=new Student();
        System.out.println(stu.getInfo());
      
     }
}

2.完成刺客刺杀总统的场景,要求:刺杀成功后,将刺客的名字和总统的名字
  都显示出来。

//总统类

package president;

public class President {
      static String name;   
      public President(){
     
      }
      public President(String n){
     name=n;
      }
}

//刺客类

package president;

public class Assassin {
       String name;
       int age;
       String sex;
       public Assassin(){
      
       }
       public Assassin(String name,int age,String sex){
      this.name=name;
      this.age=age;
      this.sex=sex;
      }
       public void assassinatePresident(President president){  
      System.out.println("一名"+age+"岁的"+sex+"性刺客,名叫"+name+",刺杀"+President.name+"总统成功!");
       }      
 }

//测试类

package president;

public class Test {


public static void main(String[] args) {
Assassin ass=new Assassin("黑风",20,"男");   //利用new关键词创建刺客对象
President pre=new President("查理斯");           //利用new关键词创建总统对象
ass.assassinatePresident(pre);                         //调用刺杀方法,完成刺杀
}

}

3.建立一个长方形的类 包括属性,长、宽 

  1) 在构造方法中,给长方形的属性初始化。

  2) 写两个方法,分别求出长方形的周长和面积。

  3) 写一个方法,以长方形的对象为参数,求出两个长方形的周长差。


package rectangle;

public class RectangleDemo {
     double len;
     double width;
     public RectangleDemo(){
     
     }
     public RectangleDemo(double len,double width){        //构造方法初始化对象的属性
    this.len=len;
    this.width=width;
     }
     public double calculatePerimeter(){                          //计算长方形周长
    double per=(this.len+this.width)*2;
    System.out.println("长方形周长为:"+per);
return per;  

     }
     public double calculateArea(){                                //计算长方形面积
    double  ar=this.len*this.width;
    System.out.println("长方形面积为:"+ar);
    return ar;
     }
     public static void main(String[] args){                                               //主方法出口
    RectangleDemo re1=new RectangleDemo(5.0,6.0);
    RectangleDemo re2=new RectangleDemo(6.0,9.9);
    re1.calculatePerimeter();
    re1.calculateArea(); 
    double errandrectangle=re1.calculatePerimeter()-re2.calculatePerimeter();                              //计算周长差
    if(errandrectangle>0){                                                                                                                        //判断周长差正负
    double errandrectangleresult1=errandrectangle;
    System.out.println("re1与re2两个长方形的周长差为:"+errandrectangleresult1);
    }else{
    double errandrectangleresult2=-errandrectangle;
    System.out.println("re1与re2两个长方形的周长差为:"+errandrectangleresult2);
    }
     
     }
   
}

4. 创建拥有继承结构的两个类,两个类拥有相同定义的show()方法,但是方法体中
   的内容不同,分别创建一个父类对象和子类对象,分别调用show()方法,观察结果。


//父类

package extendsdemo;


public class Person {
     int a;
     public Person(){
   
     }
     public Person(int a){
    this.a=a;
    System.out.println("父类带参构造:"+a);
     }
     public void show(){
    System.out.println("展示...");
     }
}
//子类一

package extendsdemo;


public class ExtendsOne extends Person{
       int b;
             
       public ExtendsOne(){
      super(23);
      System.out.println("子类1无参构造:");
       }
       public ExtendsOne(int b){
      this.b=b;
      System.out.println("子类1带参构造:"+b);
       }
       public  void show(){
      System.out.println("以后享受多少取决于你现在努力多少!");
       }
}

//子类二

package extendsdemo;


public class ExtendsTwo {
     int c;
     public ExtendsTwo(){
    super();
    System.out.println("子类2无参构造!");
     }
     public ExtendsTwo(int c){
    this.c=c;
    System.out.println("子类2带参构造:"+c);
     }
     public static   void show(){
    System.out.println("显示....");
     }
}
//测试

package extendsdemo;

public class Test {

       public static void main(String[] args) {
      Person per=new Person(12);                       //创建一个父类对象
      ExtendsOne o=new ExtendsOne(11);       //创建子类一对象
                ExtendsTwo t=new ExtendsTwo();            //创建子类二对象
                per.show();                                                  //父类对象调用show()方法
               o.show();                                                     //子类一对象调用show()方法
               t.show();                                                       //子类二对象调用show()方法

      }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值