实验三 Java类编程(I) 下载本文

§3 Java类编程(I)

§3.1实验目的、内容及性质

掌握类的定义,类的继承等基本概念。

实验性质:验证、必做 实验学时:2学时 §3.2问题及思考

1、什么是构造函数,如何调用? 2. 类的构造方法名必须和类名相同吗? 3. 什么是类属性访问器, 为什么需要? 4. 类的访问控制权有哪两种? 5. 什么是包? §3.3实验指导

1、OOP:类的定义(属性与方法组成) class Student{

private String sno; /*属性变量*/ private String sname; private String sdept;

/*定义Student类的一些方法*/ .... }

注意:包的概念package:(将多个类放在一起)。 类只有生成对象(实例化),通过对象调用对象方法

Student s;/*声明一个,并未实例化*/ s=new Student();/*实例化*/ Student s2=new Student();

2 构造函数(形式,作用,如何调用)

1)与类同名,没有任何返回值 void都不能写 一般访问修饰符public public Student(){

}

2)构造函数一般为了对对象属性赋初始值 public Student(String sno,String sname){

this.sno=sno; this.sname=sname;

}

3)构造函数,当类实例化系统首先自动调用相应的构造函数. Student s1=new Student();//调用无形式参数构造函数 Student s2=new Student(95002,\ //调用了形式参数为(String,String)构造函数 3 属性set与get方法

/*设置属性的set与get方法*/ public String getSno(){ return sno; }

public void setSno(String sno){ this.sno=sno; }

public String getSname(){ return sname; }

public void setSname(String sname){ this.sname=sname; }

4、函数重载:在一个类中,函数名称相同,但是形式参数的个数或形参类型不同,这样一组构成函数重载. public class Shape{

public double area(double r){ return Math.PI*r*r; }

public double area(double w,double h){ return w*h;

}

public double area(double a,double b,double c){ double s=(a+b+c)/2;

return Math.Sqrt(s*(s-a)*(s-b)*(s-c)); } }

§3.4实践编程 1、基本类定义:

编写一个类,描述学生的学号、姓名、成绩。学号用整型,成绩用浮点型,姓名用String类型。使用构造函数给这些属性赋值。并编写一个成员函数显示学生信息。编写一个测试类,生成该类的一个对象,显示该学生信息。

package Ex3_1;

public class Student { private int sno;

private String sname; private float score;

public Student(int sno,String sname,float score){ this.sno=sno;

this.sname=sname; this.score=score; }

public Student(){ }

public String toString(){ //output return sno+\+sname+\+score; }

public int getSno(){ return sno; }

public void setSno(int sno){ this.sno = sno; }

public String getSname(){ return sname; }

public void setSname(String sname){ this.sname = sname; }

public float getScore(){

return score; }

public void setScore(float score){ this.score =score; }

}

package Ex3_1;

public class Test {

public static void main(String[] args) { Student s1=new Student(); s1.setSno(20130001); s1.setSname(\); s1.setScore(90.0f);

Student s2=new Student(20130002,\,60.0f); Student s3=s2;

System.out.println(s1.toString()); System.out.println(s3.toString()); } }

2、设计一个描述二维平面上点的类Point,该类需要描述点的横坐标和纵坐标,并提供属性的set/get访问器方法和计算两点间距离的方法。写一个程序测试这个类

package Ex3_2;

public class Point { private int x,y; private double s; public Point(){ }

public Point(int x,int y){ this.x=x; this.y=y; }

public int getX(){ return x; }

public void setX(int x){ this.x=x; }

public int getY(){ return y; }

public void setY(int y){ this.y=y; }