第六周作业

第四次实验报告
一.实验目的
(1)掌握类的继承方法
(2)变量的继承和覆盖,方法的继承,重载和覆盖实现
二.实验内容
(1)根据下面的要求实现圆类 Circle.
① 圖类Cirele的成员变量:radius表示圆的半径。
圆类Circle 的方法成员:
Circle():构造方法,将半径置0
Circle(doubler):构造方法,创建 Circle 对象时将半径初始化为r
double gerRadius();获得圆的半径值
double gesiPerimeter():获得圆的周长
voiddisp():将圈的半径、圖的周长和圆的面积输出到屏幕
实验代码

package 官方;
import java.util.Scanner;
public class Circle {
	
	                private  double radius;
	                
	                public Circle(){          
	                    this.setRadius(0);
	                }
	                
	                public Circle(double r){   
	                    this.setRadius(r);
	                }
	                
	                public double getRadius() {   
	                return radius;
	            }

	            public void setRadius(double radius) {
	                this.radius = radius;
	            }
	              public double getPerimeter() {  
	                  return getRadius()*2*Math.PI;
	              }
	              public double getArea() {    
	                  return Math.PI*getRadius()*getRadius();
	              }
	              public void disp(){ 
	                  System.out.println("圆的半径:"+getRadius()); 
	                  System.out.println("圆的周长:"+getPerimeter());
	                  System.out.println("圆的面积: "+getArea());
	               }
}
public class Test {
	 public static void main(String[] args){
         System.out.println("输入圆的半径");
             Scanner sc=new Scanner(System.in); 
         double r=sc.nextDouble();
        
       Circle Cy=new Circle(r);
         Cy.disp();
         
         
     }

}

	             
	             

运行结果

这道题就是简单的考查构造方法,我觉得属性一定要封装,养成一个好习惯

(2)继承第(1)题中的圆Circle 类,派生圆柱体类Cylinder。要求如下:
① 圆柱体类 Cylinder的成员变量:height 表示圆柱体的高。
圆柱体类 Cylinder 的成员方法;
Cylinder(doubler doubleh)构造方法,创建Cylinder对象时将圆半径初始化为r,圆柱高初始化为为 h
double geitteight():获得圖柱体的高
double getVol():获得圆柱体的体积
voiddispVol():将國柱体的体积输出到屏幕
(3)按照第(2)题的Cylinder 类,接上键盘的输入值作为圆的半径和圆柱体的高,计算圆柱体的体积。
实验代码

package 官方;
import java.util.Scanner;
public class Cylinger  extends Circle{
	 private double height;    

     public double getHeight() {
         return height;
     }

     public void setHeight(double height) {
         this.height = height;
     }
     Cylinger (double r,double h){
            this.setRadius(r); 
            this.setHeight(h);
     }
      
     public double getVol(){ 
         return getArea()*getHeight(); 
     } 
      
     public void dispVol(){ 
         System.out.println("圆柱的体积:"+getVol()); 
     } 
}
public class Test {
	 public static void main(String[] args){
         System.out.println("输入圆的半径");
             Scanner sc=new Scanner(System.in); 
         double r=sc.nextDouble();
         System.out.println("输入圆柱的高");
         double h=sc.nextDouble();
       Cylinger Cy=new Cylinger(r,h);
         Cy.dispVol();
         
         
     }

}

运行结果截图

这道题考的是继承,方法和上题一样,我觉得老师上节课讲的那个子类与父类之间的转换,我还不是很懂,重点是建了太多类了,我脑子反应不过来;

三、结论
这周我们重点学习了多态性,它分为两种:
一,方法的重载和复写;

对于java的重载主要用于增加程序的可读性,让他看起来更好看;
java的复写很好理解,就是在父类与子类,子类定义了与父类同名的方法,子类复写的方法不能拥有比父类更严格的访问权限

二,对象的多态性;
多态在对象中是多种表现的形式,在同一个事件发生在不同的对象上是会产生不同的结果,它的优点很多有可替代性,扩充性,接口性,灵活性,简化性。当使用多态性调用方法时,首先检查父亲中是否有该类的方法,多态的好处可以使程序有良好的扩展,并可以所有的类的对象进行通用处理。

public class Test {
    public static void main(String[] args) {
      show(new Cat());  // 以 Cat 对象调用 show 方法
      show(new Dog());  // 以 Dog 对象调用 show 方法
                
      Animal a = new Cat();  // 向上转型  
      a.eat();               // 调用的是 Cat 的 eat
      Cat c = (Cat)a;        // 向下转型  
      c.work();        // 调用的是 Cat 的 work
  }  
            
    public static void show(Animal a)  {
      a.eat();  
        // 类型判断
        if (a instanceof Cat)  {  // 猫做的事情 
            Cat c = (Cat)a;  
            c.work();  
        } else if (a instanceof Dog) { // 狗做的事情 
            Dog c = (Dog)a;  
            c.work();  
        }  
    }  
}
 
abstract class Animal {  
    abstract void eat();  
}  
  
class Cat extends Animal {  
    public void eat() {  
        System.out.println("吃鱼");  
    }  
    public void work() {  
        System.out.println("抓老鼠");  
    }  
}  
  
class Dog extends Animal {  
    public void eat() {  
        System.out.println("吃骨头");  
    }  
    public void work() {  
        System.out.println("看家");  
    }  
}

输出结果

吃鱼
抓老鼠
吃骨头
看家
吃鱼
抓老鼠
posted @ 2019-10-07 18:28  hshsr  阅读(267)  评论(0编辑  收藏  举报