第5章类和对象
【例5-1】定义“银行账户”类的构造方法,实现对银行账户属性变量的赋值操作。Cust(String newName, int newID, String newPWD, int newMoney){ name = newName;
ID = newID;
PWD = newPWD;
money = newMoney;
}
5.2 案例分析:银行账户对象的创建
本例的代码如下:
class Cust {
String name;
int ID;
String PWD;
int money;
Cust(String newName,int newID,String newPWD,int newmoney){ name = newName;
ID = newID;
PWD = newPWD;
money = newmoney;
}
void getMoney(int getMoney){
money = money - getMoney;
}
void setMoney(int saveMoney){
money = money + saveMoney;
}
void search(){
System.out.println("用户姓名:"+name);
System.out.println("用户账号:"+ID);
System.out.println("账户余额:"+money);
}
void changePWD(String newPWD){
PWD = newPWD;
}
}
class MainDemo{
public static void main(String[] args){
Cust myCust = new Cust("Tom",100,"11111",10000);
myCust.setMoney(5000);
myCust.getMoney(3000);
myCust.changePWD("Tom");
myCust.search();
}
}
【例5-4】静态方法与实例方法的区别。
public class StaticDemo {
static double pi=3.14; //静态变量,类变量
double pix=3.14; //实例变量,对象变量
double getArea(){ //实例方法
return pi*3*3; //类变量,实例方法能用类变量}
static double getArea1(){
return pi*3*3; //类方法能用类变量
}
double getArea2(){
return pix*3*3; //实例方法能用实例变量}
//static double getArea3(){
//return pix*3*3; //类方法不能用实例变量// }
}
【例5-5】静态成员的加法运算。
class HasStatic{
private static int x = 100;
public static void main(String args[]){
HasStatic hs1 = new HasStatic();
HasStatic hs2 = new HasStatic();
hs1.x++;
hs2.x++;
hs1.x++;
System.out.println("x="+x);
}
}
【例5-6】为Cust类写两个构造方法,一个构造方法利用this关键字调用有参构造方法,另一个为有参构造方法,参数分别为姓名,账号、密码及余额。
Cust(){
this("Tom",100,"12345",10000);
}
Cust(String newName,int newID,String newPWD,int newmoney){
name = newName;
ID = newID;
PWD = newPWD;
money = newmoney;
}
【例5-7】重载Cust类的构造方法,一个为无参构造方法实现成员变量的初始化,另一个为有参构造方法,实现形参到成员变量的赋值。
Cust(){
name = "";
ID = 0;
PWD = "";
money = 0;
}
Cust(String newName,int newID,String newPWD,int newmoney){
name = newName;
ID = newID;
PWD = newPWD;
money = newmoney;
}
5.5 案例分析:银行账户类构造方法的重载
本例的代码如下:
class Cust {
String name;
int ID;
String PWD;
int money;
static String bankName="建设银行";
int selfNum=0;
static int allNum=0;
Cust(){
name = "";
ID = 0;
PWD = "";
money = 0;
allNum++;
selfNum=allNum;
}
Cust(String newName,int newID,String newPWD,int newmoney){ name = newName;
ID = newID;
PWD = newPWD;
money = newmoney;
allNum++;
selfNum=allNum;
}
void getMoney(int getMoney){
money = money - getMoney;
}
void setMoney(int saveMoney){
money = money + saveMoney;
}
void search(){
System.out.println("所属银行:"+Cust.bankName);
System.out.println("您是本银行的"+allNum+"个顾客中的第"+
selfNum+"个顾客");
System.out.println("用户姓名:"+name);
System.out.println("用户账号:"+ID);
System.out.println("账户余额:"+money);
}
void changePWD(String newPWD){
PWD = newPWD;
}
void setInfo(String newName,int newID,String newPWD,int newmoney){ name = newName;
ID = newID;
PWD = newPWD;
money = newmoney;
}
}
class Demo {
public static void main(String[] args){
Cust st1 = new Cust("Tom",100,"11111",10000);
Cust st2 = new Cust();
st1.setMoney(5000);
st1.getMoney(3000);
st1.changePWD("Tom");
st1.search();
st2.setInfo("Jerry", 200, "22222", 10000);
st2.setMoney(10000);
st2.getMoney(5000);
st2.changePWD("Jerry");
st2.search();
}
}
【例4-10】创建不同的包,并在包内创建不同的类,实现不同包间类的访问。
在lession3包中的主文件Lession3.java代码如下:
package lession3;
// 注意,我们使用了其他package的类,所以需要import进来
// 注意:路径必须为完整的路径
import lession3.otherpackage.PublicClassOtherPackage;
//public的类,可以被任何类在任何地方访问
//默认权限的类(也就是没写任何访问描述符的类)只能在当前package访问,不能被其他package 的类访问
public class Lession3 {
public static void main(String[] args) {
// 调用同一package下的public访问权限类
System.out.println (new publicClassSamePackage().toString());
// 调用同一package下的默认访问权限类
System.out.println (new DefaultClassSamePackage().toString());
// 调用不同package下的public访问权限类
System.out.println (new PublicClassOtherPackage().toString());
// 调用不同package下的默认访问权限类
// System.out.println(new DefaultClassOtherPackage().toString());
}
}
在lession3包中PublicClassSamePackage.java代码如下:
package lession3;
/**
* 相同package的公开访问权限类
*/
public class PublicClassSamePackage {
public String toString() {
return "相同package的公开类";
}
}
在lession3包中DefaultClassSamePackage.java代码如下:
package lession3;
/**
* 相同package的公开访问权限类
*/
public class PublicClassSamePackage {
public String toString() {
return "相同package的公开类";
}
}
在lession3.otherpackage包中PublicClassOtherPackage.java代码如下:
package lession3.otherpackage;
/**
* 其他package的公开访问权限类
*/
public class PublicClassOtherPackage {
public String toString() {
return "其他package的公开类";
}
}
在lession3.otherpackage包中DefaultClassOtherPackage.java代码如下:package lession3.otherpackage;
/**
* 不同package的默认访问权限类。
*/
class DefaultClassOtherPackage {
public String toString() {
return " 不同package的默认类";
}
}
5.7案例分析:简单的银行账户管理程序
本例的代码如下:
import java.io.BufferedReader;
import java.io.InputStreamReader;
class KB{
public static String scan(){
String str = "";
try {
BufferedReader buf = new BufferedReader(
new InputStreamReader(System.in));
str = buf.readLine();
}
catch (Exception e){ }
return str;
}
}
class Cust{
private String name;
private int ID;
private String PWD;
private int money;
static String bankName="建设银行";
private int selfNum=0;
static int allNum=0;
Cust(String newName,int newID,String newPWD,int newmoney){ name = newName;
ID = newID;
PWD = newPWD;
money = newmoney;
allNum++;
selfNum=allNum;
}
void getMoney(){
System.out.print("请输入要取出的金额:");
int n = Integer.parseInt(KB.scan());
money = money-n;
}
void saveMoney(){
System.out.print("请输入要储蓄的金额:");
int n = Integer.parseInt(KB.scan());
money = money+n;
}
void search(){
System.out.println("所属银行:"+Cust.bankName);
System.out.println("您是本银行"+allNum+"个顾客中的第"+
selfNum+"个顾客");
System.out.println("用户姓名:"+name);
System.out.println("用户账号:"+ID);
System.out.println("账户余额:"+money);
}
void changePWD(){
System.out.print("请输入用户密码:");
String p=KB.scan();
PWD=p;
}
int getID(){
return ID;
}
}
class Demo{
public static void main(String[] args){
Cust st = new Cust("Tom",100,"12345",10000);
System.out.print("请输入您的ID:");
int ID = Integer.parseInt(KB.scan());
if(ID == st.getID()){
while (true){
System.out.print("1存款 ");
System.out.print("2取款 ");
System.out.print("3修改密码 ");
System.out.print("4查询 ");
System.out.print("5退出");
int n=Integer.parseInt(KB.scan());
switch (n){
case 1:
st.saveMoney(); break;
case 2:
st.getMoney(); break;
case 3:
st.changePWD(); break;
case 4:
st.search();break;
case 5:
System.exit(1);
}
}
else{
System.out.print("您输入的ID错误!");
}
}
}
对于案例代码修改如下:
import java.io.BufferedReader;
import java.io.InputStreamReader;
class KB{
//此部分代码与前述代码段相同
}
class Cust {
//此部分代码与前述代码段相同
}
class Demo{
p ublic static void main(String[] args){
Cust st = new Cust("Tom",100,"12345",10000);
System.out.print("请输入您的ID:");
int ID = Integer.parseInt(KB.scan());
if(ID == st.getID()){
run(ID);
}
else{
System.out.print("您输入的ID错误!");
}
}
Static void run(Cust st){
while (true){
System.out.print("1存款 ");
System.out.print("2取款 ");
System.out.print("3修改密码 ");
System.out.print("4查询 ");
System.out.print("5退出");
int n=Integer.parseInt(KB.scan());
switch (n){
case 1:
st.saveMoney(); break;
case 2:
st.getMoney(); break;
case 3:
st.changePWD(); break;
case 4:
st.search();break;
case 5:
System.exit(1);
}
}
}
}
修改代码如下:
import java.io.BufferedReader;
import java.io.InputStreamReader;
class KB{
//此部分代码与前述代码段相同
}
class Cust {
//此部分代码与前述代码段相同
//下述代码为菜单操作方法
void run(){
while (true){
System.out.print("1存款 ");
System.out.print("2取款 ");
System.out.print("3修改密码 ");
System.out.print("4查询 ");
System.out.print("5退出");
int n=Integer.parseInt(KB.scan());
switch (n){
case 1:
st.saveMoney(); break;
case 2:
st.getMoney(); break;
case 3:
st.changePWD(); break;
case 4:
st.search();break;
case 5:
System.exit(1);
}
}
}
}
class Demo{
public static void main(String[] args){
Cust st = new Cust("Tom",100,"12345",10000);
System.out.print("请输入您的ID:");
int ID = Integer.parseInt(KB.scan());
if(ID == st.getID()){
st.run();
}
else{
System.out.print("您输入的ID错误!");
}
}
}
引入对象数组存储四个银行账户的信息,修改代码如下:
import java.io.BufferedReader;
import java.io.InputStreamReader;
class KB{
//此部分代码与前述代码段相同
}
class Cust {
//此部分代码与前述代码段相同
}
class Demo{
public static void main(String[] args){
Cust st[]=new Cust[4];
st[0]=new Cust("Mike",1000,"111",111);
st[1]=new Cust("Bob",2000,"222",222);
st[2]=new Cust("cindy",3000,"333",333);
st[3]=new Cust("ruby",4000,"444",444);
boolean flag=false;//用于判断是否是全法的账户
while (true){
System.out.println("请输入您的ID");
int ID=Integer.parseInt(KB.scan());
for (int i=0;i<4;i++){
if (ID==st[i].ID){
flag=true;
}
}
if (flag){
st[i].run();
}
else{
System.out.println("您输入的账号不正确,请重新输入");
continue;
}
System.out.println("是否还有顾客,没有请按N");
String str=KB.scan();
if (str.equals("N")||str.equals("n")){
break;
}
}
}
}
实验5:Java类与对象 一、实验目的 (1)使用类来封装对象的属性和功能; (2)掌握Java类的定义。 (3)java对象的使用 二、实验任务 (1)按要求编写一个Java程序。 (2)按要求完善一个Java程序,编译、运行这个程序,并写出运行结果。 三、实验内容 1.编写一个Java程序片断,以定义一个表示学生的类Student。这个类的属性有“学号”、“班号”、“姓名”、“性别”、“年龄”,方法有“获得学号”、“获得班号”、“获得性别”、“获得姓名”、“获得年龄”、“获得年龄”。 2.为类Student增加一个方法public String toString( ),该方法把Student类的对象的所有属性信息组合成一个字符串以便输出显示。编写一个Java Application程序,创建Student类的对象,并验证新增加的功能。 class Student{ long studentID; int classID; String name; String sex; int age; public Student(long studentID,int classID,String name,String sex,int age){ this.studentID=studentID; this.classID=classID; https://www.doczj.com/doc/e05241952.html,=name; this.sex=sex; this.age=age; } public long getStudentID(){ return studentID; } public int getClassID(){
实验一Java面向对象基础、数组实验报告 一、实验目的 1. 理解面向对象编程基本思想 2. 了解类的封装方法,以及如何创建类和对象 3. 掌握面向对象程序设计的方法,了解类的继承性和多态性的作用 4. 掌握Java 中的数组定义、引用 二、实验要求 编写程序时要注意体现面向对象思想,体会不同访问控制符的作用。 1. 编写一个Vehicle类和它的二个子类Bus类和Boat类。(要求:程序要有构造方法重载;要能体现类的多态性) 2. 定义一个由若干个整数组成的数组,要求输出该数组的平均值以及所有的奇数之和。 3. 随机生成30个0-9之间的数字,分别统计0-9这10个数字分别出现了多少次。 三、实验内容及结果 1. 编写一个Vehicle类和它的二个子类Bus类和Boat类。 public class Vehicle { private String color; public Vehicle() { this("black"); } public Vehicle(String color) { this.color = color; } public String toString() { return "this is a " + this.color + " vehicle"; } } class Bus extends Vehicle { private int passagerNumber; public Bus() { this(50, "black"); } public Bus(int number) { this(number, "black"); } public Bus(int number, String color) { super(color); this.passagerNumber = number; } public String toString() {
实验3 类和对象的创建与使用 一、实验目的 1、掌握类的定义和对象的创建; 2、掌握构造方法的作用、格式及重载; 3、掌握修饰词对成员存取权限的限制。 4、掌握实例成员、类成员的定义和使用方法。 二、实验内容 1、定义储蓄账户类,并创建对象模拟银行基本操作。 2、两游戏角色决斗。给定二个不同的角色,判定交手的胜负关系。(选做) 3、设计学生类、学校类、录取类,根据学生成绩和学校分数线,判断是否录取。 三、实验步骤 说明:请将第1,3题代码写入实验报告实验步骤处。 1、模拟银行账户功能。 编写程序,模拟银行账户功能。要求如下: 属性:账号、姓名、地址、存款余额、最小余额。 方法:存款、取款、查询。 根据用户操作显示储户相关信息。 如存款操作后,显示储户原有余额、今日存款数额及最终存款余额。 取款时,若取款成功,显示信息提示;若最后余额小于最小余额,拒绝取款,并显示信息提示。具体显示信息可据方便性原则自拟。 public class AccountOperation { public static void main(String [] args) { Account account1=new Account("650101","柳眉","天河学院",800.00); Account account2=new Account("650102","郑杰","天河学院",200.00); account1.transfer(account1,account2,300.0); account1.deposit(300.5); account1.withdraw(200); account1.withdraw(300); account1.query(); System.out.println(account1.toString()); //System.out.println(https://www.doczj.com/doc/e05241952.html,); error!! } } class Account { private String account; private String name; private String address; private double balance;
Java面向对象程序设计实验课的心得体会经过这几周对Java面向对象程序设计的学习,让我更加了解到Java学习的重要性。 在实验课上,我们完成多个实验,在这个阶段的学习中,我从认识到熟悉,而后到能够自主运用。通过对Java的了解,我发现它确实有很多方便之处,它集抽象性、封装性、继承性和多态性于一体,实现了代码重用和代码扩充,提高了软件开发的效率。对于我们这个专业来说学好Java语言是很重要的,所以在实验的过程中我都尽力理解java编程思想、掌握基本技巧,尽量学到最多的知识。 学习程序设计的基本目的就是培养描述实际问题的程序化解决方案的关键技能,Java面向对象程序设计是一门实践性比较强的课程,在实际中,我们必须把理论和实践结合起来。在实验中,我们理解理论课上的知识,然后运用到实际的操作中,我们必须在现有的理论的基础上,进行实践。多次实验后,也让我看到了现在学习的一个很大弱点:只听不练,永远不会熟练运用;空记技巧,忽略思想,会在多变的习题中十分无奈。 Java思想:Java是一门面向对向语言,他定义一切都是对象面向对象,就是面对现实; 现实中的一切都是对象,他们有分类,就产生了“类”; 他们有不同,类和类之间的不同,使用类来区分; 同一个类中不同的对象的区别,使用成员区分。
所以,面向对象的内部逻辑是分类。 面向对象编程思想就象数学上的一些概念,如:空间、群、环、域等 原始的编程思想就象古典数学,人们只在一个集合上探讨问题,没有系统的方法(即运算)定义,于是仁者见仁、智者见智,这样在一定程度上造成了理论的一种混乱局面,不利于科学的发展。于是近代数学向公理化发展,这是什么意思呢?就是说,人们除了在限定论域(即上面的集合,面向对象也有此概念)外,还在此论域上加进了一套通用的、公认的运算(方法);集合加上集合上定义的运算就构成了数学上的空间、群等,在计算机领域里,就变成为“类”。这种集合上定义了操作的东西利用起来就方便多了,这使得人们讨论问题时都在给定集合的运算能力上下工夫,即有通用性可事半功倍。 面向对象的编程思想就要想近世代数的分析思想,首先要确定“论域”,即工程所涉及到的所有的“对象”,然后要分类处理,把隶属同一类别的对象集合在一起(做成一个集合),定义他们之间的运算性质及可以进行的操作,这样就构建了一个类,当然以后用到这个类的对象时都要通过已经定义了的操作来完成各项功能,这就是常要求的类的“类的成员变量要通过共有函数来操作”。 我想真正的面向对象编程思想不应该是编程思想,应该是面向对象的分析方法才对! 我的理解: 1、将分析过程为抽象的过程:简言之:分成多个小问题(组成部分),
j a v a面向对象知识点总 结 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998
1 类和对象 类: 类是用来描述一类事物的共性内容的, 类是抽象的; 创建类,如何描述 属性功能 用变量来描述属性 用方法来描述功能 对象: 就是现实中具体的事物,对象是具体的; 创建对象 类名对象名 = new 类名(); 如何通过对象访问类中属性和方法呢 对象名.变量名 对象名.方法名(); 只要是new的对象,就是新创建的,就会在内存中开辟一段单独的空间匿名对象 创建的对象没有赋值给具体的变量; 所以给匿名对象的属性赋值是没有任何意义的; 匿名对象使用场景
1 调用方法 2 作为参数传递 3 添加进容器中 This 关键字 This. 类中的普通方法访问到的成员前边都有this.这个关键字This. 就代表当前对象, 普通方法, 创建对象调方法, 谁调用就代表谁 This(); 可以用来在构造函数中调用本类与之相对应的构造函数使用注意事项: 1 this() 只能是构造函数的第一条执行语句 2 this() 不能在构造函数之间相互调用 3 this() 不能调用自己 构造函数(方法) 构造函数的作用 用来给对象进行初始话的(初始化就是指给对象的各个属性赋值) 构造函数何时执行 对象一创建就会调用与之相对应的构造函数
构造函数语法 修饰符没有返回值类型类名(参数列表){ 具体执行的代码 } 构造函数自动添加 当一个类中我们没有明确指定构造函数的话,jvm会自动帮我们添加一个空参数的构造, 如果我们指定了,就不添加了 构造函数和普通函数的区别 执行时机不同 对象一创建就会调用与之相对应的构造函数 普通函数只有被调用才会执行 return 1 就是用来在方法中返回具体结果(结果类型必须和方法的返回值类型一致) 2 即便方法的返回值类型是void,方法中也可以出现 return; 3 构造函数中也可以有return关键字 成员变量和局部变量 1 作用范围不同, 成员变量是定义在类中的,在整个类中都起作用 局部变量是定义在方法中的,在所在代码块起作用
实验04 类与对象(6学时) (第4章类与对象) 一、实验目的 二、实验任务 4_1 声明一个CPU类。 包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。 4_2 声明一个简单的Computer类。 有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 4_3 声明一个表示时间的结构体。 可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。
4_4(习题4-10)设计一个用于人事管理的People(人员)类。 考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现人员信息的录入和显示。要求包括:构造函数和析构函数、内联成员函数、组合。 三、实验步骤 1.(验证)声明一个CPU类,观察构造函数和析构函数的调用顺序。 首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run和stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。在主程序中声明一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:。(程序见步骤2) ★程序的运行结果: 2.(示例)调试程序文件。 使用调试功能观察程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。参考程序如下: 操作)调试操作步骤如下: (1)单击“调试 | 逐语句”命令,系统进行单步执行状态,程序开始运行,一个DOS 窗口出现,此时Visual Studio中光标停在main()函数的入口处。
《JAVA面向对象设计》课程标准 课程类别:必修课适应专业:软件技术相关专业 课程学时:64节学分:4 一、课程定位 《JAVA面向对象设计》主要讲述了面向对象JAVA程序设计的概念和应用,训练学生掌握面向对象的概念和基本设计方法,掌握JavaSE技术的主要内容和编程方法,是计算机软件专业的一门专业基础骨干课程。 通过本课程的学习,第一部分着重介绍Java编程的基本内容。主要有java的基本环境、java语言基础、java工程规范、基本特征、数据类型、流程控制、数组、函数、异常等,通过这部分的学习可以用java语言完成简单编程逻辑的程序编写;第二部分,着重学习JavaSE类库的应用。主要包括输入/输出、java多线程、容器类、网络通信、java界面编程、事件监听与响应、Java数据库编程等;第三部分,着重介绍Java面向对象的概念和编程。包括类和对象、封装、继承、多态、抽象类、接口、设计模式的概念和使用方法,通过这部分学习,建立面向对象程序设计的概念和应用的基本认识。 通过本课程的学习,能够训练学生编程逻辑,了解面向对象的概念和基本实现方法,掌握JAVASE技术的主要内容,为后续的《JAVA EE程序设计》《移动互联网程序设计》等课程打下坚实的基础。 二、课程目标 本课程目标分为知识目标(即学生应该掌握的基本理论和基本方法)、总体能力目标(即学生学习完本课程后应该达到的职业技能)。 本课程知识目标: 1)掌握JAVA语言中数据类型与表达式,语句控制和数组的概念及用法。 2)掌握异常的概念、分类和异常处理编程,自定义异常的实现。 3)熟悉Java常用工具类的使用(字符串类、系统类、时间类、格式化类等)4)掌握线程的概念、意义,创建方法、调度方法、同步机制、线程通信的概
读书破万卷下笔如有神 JAVA面向对象基础测试题 提示:本题为第一阶段,JAVA面向对象基础部分练习题,包括对象,类,继承,封装,多态,接口,内部类等等,java核心基础,适合初学者对面向对象基础的知识进行测试,以便查漏补缺。 1. 程序执行的结果是:()。 01 public class Point{ 02 int y = 7; 03 public void step(int y) { 04 y += y; 05 System.out.println(y); 06 读书破万卷下笔如有神 } 07 public static void main(String[] args) {
08 Point p = new Point(); 09 p.step(10); 10 } 11 } A.14 B.20 C.10 D.17 正确答案:B解析: 2. 读书破万卷下笔如有神 程序的执行结果是:()。 01 public class Question { 02 private int num; 03 public static void main(String [] args){ 04
Question q = new Question(); 05 q.num=13; 06 update(q); 07 System.out.println(q.num); 08 } 读书破万卷下笔如有神 09 public static void update(Question q){ 10 q.num=9; 11 } 12 } A.13 B.9 C.0 D.4
正确答案:B解析: 3. 程序执行的结果是:()。 01 public class Answer { 读书破万卷下笔如有神 02 public static void main(String[] args) { 03 int score = 20; 04 Answer ans= new Answer(); 05 ans.add(score); 06 System.out.println( main:score = + score); 07 } 08 void add(int score) { 09 System.out.println( add:score= + score++); 10
第1章 Java语言概述与面向对象思想 1 1.1 Java语言的发展 1 1.1.1 Java语言的产生 1 1.1.2 Java语言的发展 1 1.2 Java语言的特点 2 1.3 面向对象与面向过程的差异 3 1.3.1 面向过程思想回顾 4 1.3.2 面向对象思想介绍 4 1.4 面向对象程序设计中的主要概念和特征 4 1.4.1 主要概念 5 1.4.2 主要特征 5 *1.5 Java与C++的差异 5 1.6本章小结5 习题 5 第2章 Java语言开发环境 6 2.1 JDK 6 2.1.1 JDK的简介6 2.1.2 JDK的构成6 2.1.3 JDK的使用6 2.2 IDE 8 2.2.1 IDE简介8 2.2.2 JBuilder 9 2.2.3 Eclipse 9 2.2.4 相关资源9 2.3 Project管理9 2.3.1 Project的含义9 2.3.2 可行的Project组织模式9 2.3.3 主要开发工具的Project目录10 2.4 本章小结10 习题10 第1章 Java语言概述与面向对象思想 1.1 Java语言的发展 1.1.1 Java语言的产生以介绍面向对象编程的基本概念、基本理论为重点,结合Java语言的语法规则、编程特点和设计思想、强调容易发生错误和编程应注意的地方,使学生能对Java 技术有一个总体了解,通过本课程学习,使学生掌握Java语言的基础知识,理解和掌握面向对象程序设计的基本思想,熟练地使用Java语言进行程序的编写、编译以及调试工作 上世纪90年代初期,Sun公司在研究一种适用于未来的智能设备的编程语言,该语言要具有一些新的特性,以避免C++的一些不足。 该语言起初命名为Oak,来源于语言作者Gosling办公室窗外的一棵橡树(Oak)。后来在注册时候遇到了冲突,于是就从手中的热咖啡联想到了印度尼西亚一个盛产咖啡的岛屿,中文名叫爪哇,Java语言得名于此。 随着Internet的迅速发展,Web应用日益广泛,Java语言也得到了迅速发展。1994年,Gosling
类和对象 一、实验目的 1、掌握类的定义和对象的创建; 2、掌握构造方法的作用、格式及重载; 3、掌握修饰词对成员存取权限的限制。 4、掌握实例成员、类成员的定义和使用方法。 二、实验内容 1、定义储蓄账户类,并创建对象模拟银行基本操作。 2、两游戏角色决斗。给定二个不同的角色,判定交手的胜负关系。(选做) 3、设计学生类、学校类、录取类,根据学生成绩和学校分数线,判断是否录取。 三、实验步骤 说明:请将第3题代码写入实验报告实验步骤处。 1、模拟银行账户功能。 编写程序,模拟银行账户功能。要求如下: 属性:账号、姓名、地址、存款余额、最小余额。 方法:存款、取款、查询。 根据用户操作显示储户相关信息。 如存款操作后,显示储户原有余额、今日存款数额及最终存款余额。 取款时,若取款成功,显示信息提示;若最后余额小于最小余额,拒绝取款,并显示信息提示。具体显示信息可据方便性原则自拟。 2、两游戏角色决斗。(选做) 角色1交手次数+1,生命值-1,经验值+2;角色2交手次数+1,生命值-2,经验值+3。经验值每增加50时,生命值+1;生命值<0判为负。生命值初始为1000,经验值初始为0。给定二个不同的角色,判定交手的胜负关系。 提示: step1:建立角色类,给出相应的成员,并能以生命值、经验值初始化角色对象。 step2:建立fight方法,接收二个角色类型的参数,返回胜者。 step3:初始化二角色,调用fight方法。 3、根据分数录取学生。 设计一个学校类,其中包含成员变量line(录取分数线)和对该变量值进行设置和获取的方法。 编写一个学生类,它的成员变量有考生的name(姓名)、id(考号)、total(综合成绩)、sports(体育成绩)。它还有获取学生的综合成绩和体育成绩的方法。 编写一个录取类,它的一个方法用于判断学生是否符合录取条件。其中录取条件为:综合成绩在录取分数线之上,或体育成绩在96以上并且综合成绩大于300。在该类的main()方法中,建立若干个学生对象,对符合录取条件的学生,输出其信息及“被录取”。 四、实验记录与分析(可自拟或选择) 1、重载的构造方法具有不同个数或不同类型的参数,编译器就可以根据这一点判断出用new 关键字产生对象时,该调用哪个构造方法了。 2、每个对象拥有各自的实例成员变量,而所有对象共享一个类成员变量。 3、实例成员变量通过对象引用,类成员变量通过类或对象名访问。
JAVA面向对象基础测试题 提示:本题为第一阶段,JAVA面向对象基础部分练习题,包括对象,类,继承,封装,多态,接口,内部类等等,java核心基础,适合初学者对面向对象基础的知识进行测试,以便查漏补缺。 1. 程序执行的结果是:()。 01 public class Point{ 02 int y = 7; 03 public void step(int y) { 04 y += y; 05 System.out.println(y); 06 } 07 public static void main(String[] args) { 08
Point p = new Point(); 09 p.step(10); 10 } 11 } A.14 B.20 C.10 D.17 正确答案:B解析: 2. 程序的执行结果是:()。 01 public class Question { 02 private int num; 03 public static void main(String [] args){ 04 Question q = new Question();
05 q.num=13; 06 update(q); 07 System.out.println(q.num); 08 } 09 public static void update(Question q){ 10 q.num=9; 11 } 12 } A.13 B.9 C.0 D.4 正确答案:B解析: 3.
程序执行的结果是:()。 01 public class Answer { 02 public static void main(String[] args) { 03 int score = 20; 04 Answer ans= new Answer(); 05 ans.add(score); 06 System.out.println(" main:score = " + score); 07 } 08 void add(int score) { 09 System.out.println(" add:score=" + score++); 10 } 11
JA V A程序作业题 1、设计一个包含多个构造函数的类,并分别用这些构造函数实例化对象。 2、编写一个类Calculate1,实现加、减两种运算,然后,编写另一个派生类Calculate2,实现乘、除两种运算。 3、建立三个类:居民、成人、官员。居民包含身份证号、姓名、出生日期,而成人继承自居民,多包含学历、职业两项数据;官员则继承自成人,多包含党派、职务两项数据。要求每个类的字段都以属性的方式对外提供数据输入输出的功能。 4、编写一个类,其中包含一个排序的方法sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。 5. 编写一个控制台应用程序,定义一个类MyClass,类中包含有public、private以及protected数据成员及方法。然后定义一个从MyClass类继承的类MyMain,将Main方法放在MyMain中,在Main方法中创建MyClass类的一个对象,并分别访问类中的数据成员及方法。要求注明在试图访问所有类成员时哪些语句会产生编译错误。 7.创建一个类包含有protected数据。在相同的文件里创建第二个类,用一个方法操纵第一个类里的protected数据 9 编写一个控制台应用程序,完成下列功能,并回答提出的问题。 1) 创建一个类A,在构造函数中输出“A”,再创建一个类B,在构造函数中输出“B”。 2) 从A继承一个名为C的新类,并在C内创建一个成员变量B。不要为C创建构造函数。 3) 在Main方法中创建类C的一个对象,写出运行程序后输出的结果。 4) 如果在C中也创建一个构造函数输出“C”,整个程序运行的结果又是什么? 10 编写一个控制台应用程序,完成下列功能,并写出运行程序后输出的结果。 1) 创建一个类A,在A中编写一个可以被重写的带int类型参数的方法MyMethod,并在该方法中输出传递的整型值加10后的结果。 2) 再创建一个类B,使其继承自类A,然后重写A中的MyMethod方法,将A中接收的整型值加50,并输出结果。 3) 在Main方法中分别创建类A和类B的对象,并分别调用MyMethod方法。 11. 创建一个类,它存储一个int数据成员MyNumber,并给该数据成员创建属性,当该数据成员被存储时,将其乘以100;当其被读取时,将其除以100。 12. 定义一个车辆(Vehicle)基类,具有Run、Stop等方法,具有Speed(速度)、MaxSpeed (最大速度)、Weight(重量)等字段。然后以该类为基类,派生出bicycle、car等类。并编
Java面向对象程序设计 (编著耿祥义张跃平) 习题1 1.James Gosling 2. (1)使用一个文本编辑器编写源文件。 (2)使用Java编译器(javac.exe)编译Java源程序,得到字节码文件。 (3)使用Java解释器(java.exe)运行Java程序 3.Java的源文件是由若干个书写形式互相独立的类组成的。 应用程序中可以没有public类,若有的话至多可以有一个public类。 4.系统环境path D\jdk\bin; 系统环境classpath D\jdk\jre\lib\rt.jar;.; 5. B 6.Java源文件的扩展名是.java。Java字节码的扩展名是.class。 7. D 8.(1)Speak.java (2)生成两个字节码文件,这些字节码文件的名字Speak.class 和Xiti8.class (3)java Xiti8 (4)执行java Speak的错误提示 Exception in thread "main" https://www.doczj.com/doc/e05241952.html,ng.NoSuchMethodError: main 执行java xiti8得到的错误提示 Exception in thread "main" https://www.doczj.com/doc/e05241952.html,ng.NoClassDefFoundError: xiti8 (wrong name: Xiti8) 执行java Xiti8.class得到的错误提示 Exception in thread "main" https://www.doczj.com/doc/e05241952.html,ng.NoClassDefFoundError: Xiti8/class 执行java Xiti8得到的输出结果 I'm glad to meet you 9.属于操作题,解答略。 习题2 1. D 2.【代码1】【代码2】错误//【代码3】更正为float z=6.89F; 3.float型常量后面必须要有后缀“f”或“F”。 对于double常量,后面可以有后缀“d”或“D”,但允许省略该后缀。4.public class Xiti4{ public static void main (String args[ ]){ char ch1='你',ch2='我',ch3='他'; System.out.println("\""+ch1+"\"的位置:"+(int)ch1); System.out.println("\""+ch2+"\"的位置:"+(int)ch2); System.out.println("\""+ch3+"\"的位置:"+(int)ch3); } } 5.数组名字.length 6.数组名字.length 7.【代码1】A,65 【代码2】-127
实验一类和对象 Visual C++ 6.0集成开发环境的使用: Visual C++系列产品是微软公司推出的一款优秀的C++集成开发环境,其产品定位为Windows 95/98、NT、2000 系列Win32 系统程序开发,由于其良好的界面和可操作性,被广泛应用。由于2000 年以后,微软全面转向.NET 平台,Visual C++6.0 成为支持标准C/C++规范的最后版本。 1.启动 安装完系统后,可以选择如下两种方式启动 1) 点击Windows “开始”菜单,选择“程序”菜单下“Microsoft Visual Studio 6.0”子菜单下的快捷方式Microsoft Visual C++ 6.0 启动Visual C++ 6.0。 2) 点击Windows “开始”菜单,选择“运行”,输入msdev,即可启动。启动后的界面如下: 图 1 启动界面 2.建立工程
选择“File”菜单下的“New”菜单项或直接按Ctrl+N,启动新建向导,如图2 所示: 图 2 新建向导 选择在“Projects”属性页选择Win32 Console Application,在Project Name 中输入项目名称demo,在Location 中选择项目文件,如图2 中c:\test\demo,项目所有文件将保存在此文件。输入完毕,单击确定按钮,进入下一界面如图3:
图 3 项目类型向导 在图 3 所示界面中选择a simple application,然后点击Finish 按钮,系统显示图4 所示界面。如果想退回上一步可以选择“Back”按钮。 图 4 项目信息 在图 4 中选择OK 按钮,系统完成项目的创建,并保存项目相关的信息。项目的目录结构如图5 所示。 1) Demo.dsw 是项目工作区文件,双击此文件,即可打开此项目; 2) Demo.dsp 为项目文件; 3) demo.cpp 是项目中的一个源程序;stdafx.h 和stdafx.cpp 为自动创建的源程序,一般不用修改。 图 5 目录结构