第六周课程总结&试验报告(四)

实验四:类的继承

实验目的:

(1)掌握类的继承方法;
(2)变量的继承和覆盖,方法的继示、重载和覆盖实现;

二、实验内容

(1)根据下面的要求实现圆类Circle.
①圆类Cirle的成员变量: radius 表示圆的半径。
②圆类Cirdle的方法成员:
Circle () :构造方法,将半径置0
Circle (doubler) :构造方法:
创建Circle对象时将半径初始化为r
double getRadius () :获得圆的半径值
double getPerimeter () :获得圆的周长
void disp O :将圆的半径、圆的周长和圆的面积输出到屏幕
(2)维承第(1)题中的圆Circle类,派生圆柱体类Cylinder。要求如下:
①圆柱体类Cylinder的成员变量: height 表示圆柱体的高。
②圆柱体类Cylinder的成员方法:Cylinder (doubler, double h)构造方法,创建Cylinder对象时将圆半径初始化为r,圆柱高初始化为h

      double getHecight () :获得圆柱体的高
      double getVol () :获得圆柱体的体积
      void dispVol () :将圆柱体的体积输出到屏幕

(3)按照第(2)题的Cylinder类,接上键盘的输入值作为圆的半径和圆柱体的高,计算圆柱体的体积。

(1)实验代码:

package 作业;

public class Circle {
        private double radius;    定义
        public Circle() {              无参构造,将半径设置为0
            radius=0;
        }
        public Circle(double r) {    将半径初始化为r
            radius=r;
        }
        public double getRadius() {        取得半径
            return radius;
        }
        public void setRadius(double radius) {      设置半径
            this.radius = radius;
        }
        public double getPerimeter() {        取得周长
            return 2*Math.PI*radius;
        }
        public double getArea() {              取得面积
            return Math.PI*Math.pow(radius,2);
        }
        public static void main(String[] args) {
            Circle c = new Circle(4);             声明对象实例化Circle对象,并给radius赋值
            System.out.println("周长:"+c.getPerimeter());
            System.out.println("半径:"+c.getRadius());     输出
            System.out.println("面积:"+c.getArea());
        }

}

本题难度不高,可以说很容易,因为是前几周以及学习过的内容了,再加上本周老师已经讲了如何编写求周长,面积代码,因此这题我很快就解决了

没有碰到什么问题。

(2)(3)实验代码:

注意我把(2)(3)的代码放一起了,因为可以说它们本来就可以算作一题

package 作业;

public class Cylinder extends Circle {            定义、继承
    private double height;
    public Cylinder(double h,double r) {         将圆半径初始化为r,圆柱高初始化为h
        super(r);                         指定调用父类中r的构造方法
        this.setHeight(height);

    }
    public double getHeight() {           取得高
        return height;
    }
    public void setHeight(double height) {          设置高
        this.height = height;
    }
    public double getVol() {            调用父类求area的方法,取得体积
        return super.getArea()*height;
    }
    public static void main(String[] args) {        声明和实例化对象,对高赋值,调用父类半径并赋值
        Cylinder cy = null;
        cy = new Cylinder(0,0);
        cy.setRadius(5.0);
        cy.height=6.0;
        System.out.println("半径:"+cy.getRadius());
        System.out.println("高:"+cy.getHeight());               输出
        System.out.println("体积:"+cy.getVol());
    }
}

本题难度也不高,就是我出现了一些小错误,第一个就是忘记了用super或则this它们放在首行,第二个就是忘记通过构造方法设置radius了,

以为继承了就不用设置了,结果在下面测试类的时候,为其赋值,出现了错误。

本周小结:

自学了一点runtime类:

1.该类主要代表了应用程序的运行环境。一个RunTime就代表一个运行环境。
2.RunTime类常用的方法:

(1) getRuntime():该方法用于返回当前应用程序的运行环境对象。

(2) exec(String command):该方法用于根据指定的路径执行对应的可执行文件。


public class Demo7 {
    public static void main(String[] args) throws IOException, InterruptedException {
        Runtime runtime = Runtime.getRuntime();
        Process process = runtime.exec("C:\\Windows\\notepad.exe");//打开记事本程序,并返回一个进程
        Thread.sleep(3000); //让当前程序停止3秒。
        process.destroy();
    }
}

(3) freeMemory():该方法用于返回Java虚拟机中的空闲内存量,以字节为单位。

(4) maxMemory():该方法用于返回Java虚拟机试图使用的最大内存量。

(5) totalMemory():该方法用于返回Java虚拟机中的内存总量。

public class Demo8 {
    public static void main(String[] args) throws IOException{
        Runtime runtime = Runtime.getRuntime();
        System.out.println("Java虚拟机中的空闲内存量:"+runtime.freeMemory());
        System.out.println("Java 虚拟机试图使用的最大内存量:"+ runtime.maxMemory());
        System.out.println("返回 Java 虚拟机中的内存总量:"+ runtime.totalMemory());
    }
}

本周学习内容总结

接口:

1.接口的定义

使用interface来定义一个接口。接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成。定义接口的基本格式如下:

[修饰符] interface 接口名 [extends 父接口名列表]{

[public] [static] [final] 常量;
[public] [abstract] 方法;
}
修饰符:可选,用于指定接口的访问权限,可选值为public。如果省略则使用默认的访问权限。
接口名:必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写。
extends 父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends关键字时,父接口名为必选参数。
方法:接口中的方法只有定义而没有被实现。

接口被用来描述一种抽象。
因为Java不像C++一样支持多继承,所以Java可以通过实现接口来弥补这个局限。
接口也被用来实现解耦。
接口被用来实现抽象,而抽象类也被用来实现抽象,为什么一定要用接口呢?接口和抽象类之间又有什么区别呢?原因是抽象类内部可能包含非final的变量,但是在接口中存在的变量一定是final,public,static的。

注意: 与Java的类文件一样,接口文件的文件名必须与接口名相同。

instanceof:

instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。
它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:

  String s = "I AM an Object!";
  boolean isObject = s instanceof Object;

我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,
显然,这是真的,所以返回true,也就是isObject的值为True。本周我们也就学习了把instanceof用在向下转型。保证程序不出现异常。

抽象类与接口的应用

1、为其实例化

在java中,可以通过对象的多态性,为抽象类和接口实例化,这样再使用抽象类和接口的时候就可以调用本子类中所覆写过的方法。
之所以抽象类和接口不能直接实例化,是因为其内部包含了抽象方法,抽象方法本身是未实现的方法,所以无法调用。
通过对象多态性可以发现,子类发生了向上转型关系之后,所调用的全部方法,都是被覆写过的方法。

努力学习,天天向上。

原文地址:https://www.cnblogs.com/neir/p/11617824.html

时间: 2024-11-09 02:02:55

第六周课程总结&试验报告(四)的相关文章

第六周课程总结&amp;试验报告(三)

Java实验报告 实验四类的继承 一. 实验目的 (1)       掌握类的继承方法: (2)       变量的继承和覆盖,方法的继承.重载和覆盖实现: 二. 实验内容 三.实验过程(请自己调整格式) (1)代码: package com.company; class Circle { double radius,perimeter,area; Circle() //构造Circle()对象 { radius = 0; } Circle(double r) { radius = r; //将

第六周课程总结&amp;实验报告(四)

实验报告(四) 一.实验目的 1.掌握类的继承 2.变量的继承和覆盖,方法的继承,重载和覆盖的实现 二.实验的内容 1.根据下面的要求实现圆类Circle. 圆类Circle的成员变量:radius表示圆的半径. 圆类Circle的方法成员: Circle():构造方法,将半径置0 Circle(double r):构造方法,创建Circle对象时将半径初始化为r double getRadius():获得圆的半径值 double getPerimeter():获得圆的周长 void disp(

2019秋JAVA第六周课程总结及实验报告(四)

题目: 源代码: package com.company; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double r = sc.nextDouble(); double h = sc.nextDouble(); Cylinder a = new Cylinder(r, h); a.diapV

第五周课程总结&amp;试验报告 (三)

课程总结 一,类的继承格式 1.在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下: class 父类 {} class 子类 extends 父类 {} 2.可以通过子类扩展父类 3.只允许多层继承,不允许多重继承 二:方法的覆写和重载 覆写:就是指子类中定义了与父类中同名的方法,但是要考虑权限,被子类覆写的方法不能拥有比父类方法更严格的访问权限. 重载:同一个类中相同名称不同参数的方法 四.抽象类的基本概念 1.包含一个抽象方法的类必须是抽象类

第六周课程总结及实验报告

一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆的半径. 2.圆类Circle的方法成员: Circle():构造方法,将半径置0 Circle(double r):构造方法,创建Circle对象时将半径初始化为r double getRadius():获得圆的半径值 double getPerimeter():获得圆的周长 void disp(

第六周总结&amp;实验报告四

这周是放国庆节的假,所有没有进行深入的学习,只是写了个实验的题目,也发现了自己在基础上还是要加强学习. 实验四 类的继承 一. 实验目的 (1) 掌握类的继承方法: (2) 变量的继承和覆盖,方法的继承.重载和覆盖实现: 二. 实验内容 1.实验源码 package first; import java.util.Scanner; class Circle{ private double radius; public Circle(){ this.setRadius(0); } public C

马哥Linux第六周课程作业

1.复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#: [[email protected] ~]# cp -a /etc/rc.d/rc.sysinit /tmp  #复制文件到/tmp下 [[email protected] ~]# vim /tmp/rc.sysinit  #使用vim打开文件,提示vim命令找不到 -bash: vim: command not found [[email prot

第五周课程总结&amp;试验报告(三)

---恢复内容开始--- ?统计该字符串中字母s出现的次数. public class test { public static void main(String[] args) { String s="this is a test of java"; int sum=0; char[] a=s.toCharArray(); for(int i=0;i<a.length;i++) { if(a[i]=='s') sum++; } System.out.println(sum);

第五周课程总结&amp;试验报告

实验三 String类的应用 实验目的 掌握类String类的使用: 学会使用JDK帮助文档: 实验内容 1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码.结果截图.) 统计该字符串中字母s出现的次数. 统计该字符串中子串"is"出现的次数. 统计该字符串中单词"is"出现的次数. 实现该字符串的倒序输出. 1)实验代码 public class new2 { public static void