Java实验三 Java面向对象基础

实验三  Java面向对象基础

一、实验目的与要求

1、掌握面向对象的基本概念,掌握类定义的方法、对象的创建、访问;

2、熟练掌握、深刻理解构造方法的概念、含义、作用、调用时机等;

3、掌握几个关键字的特征及用法:static、this;

4、深刻理解和掌握方法重载;

5、了解类的权限、成员的权限。

 

二、实验原理

1.如何定义类,类的基本构成;

class关键字定义一个类,后面加上自定义的类名。

2.成员变量一般是私有的、方法是公共的,其它权限使用很少;

3.构造方法的作用、特点等;

作用:给对象初始化。

特点:方法名称和类同名。不用定义返回值类型。不可以写retrun语句。构造方法可以被重载。

4.方法的重载:重载的时候,方法名要一样,但是参数类型或个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。

5.static、this的作用等。

static关键字:在一个java类中,可以使用static关键字来修饰成员变量,该变量被称为静态变量,静态变量被所有实例共享。要注意,static不能用来修饰局部变量和内部类中的变量。

this关键字:1.通过this关键字可以明确的去访问一个类的成员变量,解决与局部变量名称冲突的问题。

  2.通过this关键字调用成员方法。

3.构造方法是在实例化对象时被java虚拟机自动调用的,在程序中不能像调用其他方法一样调用构造方法,但可以在一个构造方法中使用“this([par1, par2...])”的形式来调用其他的构造方法,但是在成员方法中不可行,也不能在一个类中的两个构造方法中使用this相互调用。

 

、预习与准备

掌握基本的概念及原理,明确实验任务和目的,准备实验的源代码。

 

四、实验内容

1、定义一个学生类,要求如下:

(1)类名是Student;

(2)该类包含3个属性:学号sID,姓名sName,年龄sAge;

(3)给各个属性设置set\get方法,合适的访问权限;

(4)定义缺省的构造方法;

(5)定义合适的重载的构造方法;

(6)重写toString( ) 方法;

(7)定义一个表示人数的静态成员变量,用以对学号进行自动增加赋值;

(8)创建数组对象(多个学生)。

 package candice;
public class Student {
    //定义一个静态变量
    static int index = 1;
    //定义成员变量
    private int sID;
    private String sName;
    private int sAge;
    public Student() {
    }
    //定义成员变量的获取方法和设置方法
    public int getsID() {
        return sID;
    }
    public void setsID(int sID) {
        this.sID = sID;
    }
    public String getsName() {
        return sName;
    }
    public void setsName(String sName) {
        this.sName = sName;
    }
    public int getsAge() {
        return sAge;
    }
    public void setsAge(int sAge) {
        this.sAge = sAge;
    }
    //重载构造方法,传入实参
    Student(String sName, int sAge) {
        this.sName = sName;
        this.sAge = sAge;
        sID = index++;//学号自增1
    }
    //重写toString()方法,用来输出学生信息
    @Override
    public String toString() {
        return "Student{" + "sID=" + sID + ", sName= " + sName + ", sAge=" + sAge + "}";
    }
    public static void main(String[] args){
        //创建学生类,学号自增,其他参数由构造方法传入
        Student s1 = new Student("Candice",19);
        Student s2 = new Student("ChenDie",19);
        System.out.println(s1);
        System.out.println(s2);
        //学号从2017117351开始
        Student.index = 2017117351;
        Student s3 = new Student("ChenDie3",20);
        System.out.println(s3);
        Student s4 = new Student("ChenDie4",21);
        System.out.println(s4);
    }
}

2、定义一个类用以实现求最大值、次大值。必须使用面向对象的思想。

提示:定义类时,可以提供多种样式的构造方法。譬如:自动随机生成数组,人为提供数组;使用方法getFMax( )、getSMax( )来求解最大次大值;考虑是否需要提供这两个的属性对应的成员变量。

package candice;
public class max {
    public static void main(String[] args) {
        // 定义数组
        //int[] arrayInt = {6, 2, 6, 5, 3, 1};
        //随机生成数组
        int [] arrayInt =  new int[10];
    for(int i=0;i<arrayInt.length;i++){
     int temp =  (int)(Math.random()*10)+1;//随机产生一个 1~10 的整数
            arrayInt[i] = temp;//将产生的数添加到数组
            System.out.print(arrayInt[i]+"\n");
        }
        // 排序
        for (int i = 0; i < arrayInt.length - 1; i++) {
            for (int j = 0; j < arrayInt.length - i - 1; j++) {
                if (arrayInt[j] < arrayInt[j + 1]) {
                    int temp = arrayInt[j];
                    arrayInt[j] = arrayInt[j + 1];
                    arrayInt[j + 1] = temp;
                }
            }
        }
        int maxNum = arrayInt[0];// 最大值
        int secondNum = arrayInt[1];// 次大值
        System.out.println(maxNum + "," + secondNum);
    }
}

3、定义一个教师类、一个课程类。

package candice;
//定义一个教师类
public class Teacher {
    private String name;//姓名
    private String srt;//职称
    private double money;//工资
    private double src;//工龄
//set/get方法
    public Teacher() {
        this.money = money;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSrt() {
        return srt;
    }
    public void setSrt(String srt) {
        this.srt = srt;
    }
    public double getMoney() {
        return money;
    }
    public void setMoney(double money) {
        this.money = money;
    }
    public double getSrc() {
        return src;
    }
    public void setSrc(double src) {
        this.src = src;
    }
    //重载构造方法,传入实参
    Teacher(String name,String srt, double money,double src) {
        this.name = name;
        this.srt = srt;
        this.money = money;
        this.src = src;
    }
    @Override
    public String toString() {
        return "Teacher{"+"name="+name+"srt="+srt+"money="+money+"src="+src+'}';
    }
    public static void main(String[] args) {
        //教师对象
        Teacher t1 = new Teacher("chendie","教师",5000.0,5.0);
        System.out.println(t1);
        Teacher t2 = new Teacher("Candice","教师",6000.0,3.0);
        System.out.println(t1);
    }
}

//定义一个课程类
public class Cource {
    //定义成员变量
    private String cNumber;//学科编号
    private String cName;//学科名称
    private int cUnit;//学分
    //set、get方法
    public void setNumber(String number){
        cNumber=number;
    }
    public void setName(String name){
        cName=name;
    }
    public void setUnit(int unit){
        cUnit=unit;
    }
    public String getNumber(){
        return cNumber;
    }
    public String getName(){
        return cName;
    }
    public int getUnit(){
        return cUnit;
    }
    //重载构造方法,传入实参
    Cource(String cNumber,String cName,int cUnit) {
        this.cName=cName;
        this.cNumber=cNumber;
        this.cUnit=cUnit;
        }
    //重写toString()方法
    @Override
    public String toString() {
        return "Cource:"+"编号="+cNumber+"名称="+cName+"学分="+cUnit;
    }

    public static void main(String[] args){
        //创建课程类
        Cource c1 = new Cource("xk01","c",4);
        System.out.println(c1);
        Cource c2 = new Cource("xk02","java",4);
        System.out.println(c2);
    }
}

六、实验总结与体会

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值