Java 实验报告
实验一 类与对象 |
一、实验目的
1.掌握类的声明。
2.掌握对象的创建。
3.掌握方法的定义和调用。
4.掌握构造函数的使用。
二、实验内容
1.编程创建一个Box类,在其中定义三个变量表示一个立方体的长、宽和高,再定义一个方法setDemo对这三个变量进行初始化,然后定义一个方法求立方体的体积。创建一个对象,求给定尺寸的立方体的体积。
代码:
class Box {
double length,weight,height;
double V;
public void setDome(double length, double weight, double height) {
this.length = length;
this.weight = weight;
this.height = height;
}
public void setV(double length, double weight, double height){
System.out.println("V="+length*weight*height);
}
}
public class shiyan1 {
public static void main(String[] args) {
Box b=new Box();
b.setDome(5, 6, 7);
b.setV(5,6,7);
}
}
运行结果:
2.将上题的方法setDemo改用构造函数实现初始化。
代码:
class Box {
double length,weight,height;
double V;
public Box(double length, double weight, double height) {
this.length = length;
this.weight = weight;
this.height = height;
}
public void setV(double length, double weight, double height){
System.out.println("V="+length*weight*height);
}
}
public class shiyan1gouzao {
public static void main(String args[]){
Box b=new Box(4,5,6);
b.setV(4, 5, 6);
}
}
运行结果:
三、思考题
1.一个方法或一个块内定义的变量是否可以在方法外或块外使用?这种变量称为什么?方法的形式参数是否可以在方法之外使用?
答:在方法或块内定义的变量不能再方法外或块外使用,这种变量叫做局部变量,方法的形参不可以再方法之外使用。
2.为什么说构造函数是一种特殊的方法?特殊在哪里?构造函数什么时候执行?被谁调用?
答:其特殊性在于它的名字必须在它所在的类的名字完全相同,而且没有类型,构造方法也可以重载。在创建对象时调用构造函数。
实验二 继承与多态
一、实验目的
1.掌握类的继承方法。
2.掌握变量的继承和覆盖。
3.掌握方法的继承、重载和覆盖。
4.了解接口的实现方法。
二、实验内容
1.运行下面的程序,理解成员变量的继承与隐藏。
import java.io.*;
class sum_3{
int sum,num1,num2;
static int num3;
//定义构造函数初始化对象
sum_3(){
num1=0;
num2=0;
num3=0;
sum=0;
}
}
class sub_sum3 extends sum_3{
int sum,num1,num2; //隐藏父类sum_3中的实例变量
static int num3; //隐藏父类sum_3中的类变量
void sum(int i,int j,int k){
num1=i;
num2=j;
num3=k;
sum=num1+num2+num3;
}
}
public class computing{
public static void main (String arg[]){
sub_sum3 m1=new sub_sum3();
m1.sum(100,200,300);
System.out.println("sum="+m1.num1+"+"+m1.num2+"+"+m1.num3+"="+m1.sum);
}
}
2.运行下面的程序,理解方法的继承。
class Sort3{
double max1,max2,max3;
Sort3(){
max1=-1;
max2=-1;
max3=-1;
}
void sort(){
double s;
if (max1<max2){
s=max1;max1=max2;max2=s;
}
if (max1<max3){
s=max1;max1=max3;max3=s;
}
if (max2<max3){
s=max2;max2=max3;max3=s;
}
}
}
class sub_Sort3 extends Sort3{
void subsort(double i,double j,double k){用sort out
max1=i;
max2=j;
max3=k;
sort(); //调用父类中的方法sort()
}
}
public class Class1{
public static void main (String args[]){
sub_Sort3 m1 = new sub_Sort3();
m1.subsort(100,200,300);
System.out.println("三个数从大到小为:"+m1.max1+","+m1.max2+","+m1.max3);
}
}
3.运行下面的程序,理解方法的重载。
class Sort2or3{
double max1,max2,max3;
Sort2or3(){
max1=-1;
max2=-1;
max3=-1;
}
void sort(double i,double j){
double s;
max1=i;
max2=j;
if(max1<max2){
s=max1;max1=max2;max2=s;
}
}
void sort(double i,double j,double k){
double s;
max1=i;
max2=j;
max3=k;
if (max1<max2){
s=max1;max1=max2;max2=s;
}
if (max1<max3){
s=max1;max1=max3;max3=s;
}
if (max2<max3){
s=max2;max2=max3;max3=s;
}
}
}
public class Class1{
public static void main (String args[]){
Sort2or3 m1 = new Sort2or3();
m1.sort(100,200);
System.out.println("两个数从大到小为:"+m1.max1+","+m1.max2);
m1.sort(50,150,100);
System.out.println("三个数从大到小为:"+m1.max1+","+m1.max2+","+m1.max3);
}
}
4.运行下面的程序,理解方法的覆盖。
class sort_Demo{
int i,j,k,swap;
sort_Demo(){
i=j=k=swap=0;
}
void sort(int t1,int t2[]){ //父类中的方法用来实现升序
//用选择法按升序排列
for(i=0;i<t1-1;i++){
k=i;
for(j=i+1;j<t1;j++)
if(t2[j]<t2[k]) k=j;
if (k!=i){
swap=t2[i];
t2[i]=t2[k];
t2[k]=swap;
}
}
}
}
class sub_sort_Demo extends sort_Demo{
void sort(int t1,int t2[]){ //子类中的方法实现降序
//用选择法实现降序排列
for(i=0;i<t1-1;i++){
k=i;
for(j=i+1;j<t1;j++)
if(t2[j]>t2[k]) k=j;
if (k!=i){
swap=t2[i];
t2[i]=t2[k];
t2[k]=swap;
}
}
}
}
public class Class1{
public static void main (String args[]){
int a[]={34,12,8,67,88,23,98,101,119,56};
sort_Demo m1=new sort_Demo();
sub_sort_Demo m2=new sub_sort_Demo();
System.out.println("排序前的数据为:");
for (int i=0;i<10;i++)
System.out.print(" "+a[i]);
//调用父类中的sotr()方法
m1.sort(a.length ,a);
System.out.println("\n按升序排列的数据为:");
for (int i=0;i<10;i++)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论