Java考试重点合肥工业大学_第三章oop基础_合肥工业大学:Java语言程序设计_ppt_大学课件预览_高等教育资讯网...

本文详细介绍了Java中的面向对象概念,包括对象、消息和类的定义,数据抽象、实例变量和方法,以及如何通过类创建和操作对象。此外,还讨论了对象引用、内存管理和数组在Java中的使用。内容适合于学习Java编程的学生或开发者。
摘要由CSDN通过智能技术生成

第三章 面向对象基础

? 对象、消息和类

? 控制和使用对象

? 数组

3.1 对象、消息和类

抽象的计算机世界

class Car {

int color_number;

int door_number;

int speed;

void brake() { … }

void speedUp() {…};

void slowDown() { … }

}

计算机中

的对象的原型

现实生活

中的对象

? 数据抽象 (ADT)

对象的基本组成

? 实例变量:对象拥有什么

样的性质和特征?代表了

对象的状态。

? 方法:对象能做什么事?

是对象的功能单元。

对象 B

对象 A

message

什么是消息?

软件对象通过相互间传递消息来相互作用和

通信

一个消息由三部分组成,

1,接受消息的对象

2,要完成方法的名字

3,方法需要的参数

System.out.println(…..);

1 2 3

? 对象的例子

购物车

contents

addToCart()

remove()

checkOut()

Dog

size

breed

name

bark()

eat()

instance

variable

(state)

methods

(behavior)

instance

variables

methods

对象的类型 ----类

? 什么是类?

? 类不是对象,类是用于创建对象的 。

? 类是描述对象的“基本原型”,它定义一种对象所能拥有的

数据和能完成的操作,在面向对象的程序设计中,类是程序的

基本单元 。 variables

methods

从一个类可以产生

很多对象,这些对

象都属于这个类,

所有对象也称为 该

类的实例。

建立、使用第一个对象

? 需要两个类,

? 实际的类,用来创建具体对象

? 测试类( tester),拥有 main()方法,在这里创建

并访问对象。

1 编写实际的类

class Dog {

int size;

String breed;

String name;

void bark() {

System.out.println(“Ruff!”);

}

}

instance variables

a method

2 编写测试类

class DogTestDrive {

public static void main(String[] args) {

//Dog class test code

}

}

只有一个 main

方法

3 在测试类内,创建一个对象,并访问该对象的变量和方法。

class DogTestDrive {

public static void main(String[] args) {

Dog d=new Dog();

d.size=40;

d.bark();

}

}

创建一个 Dog对象

使用点运算符设置 Dog的大小

并调用它的 bark()方法 点运算符

3.2 控制和使用对象

? 与基本类型的变量不同,并不存在“对象变量”。

int a=20;

a++;

a(20)

内存

a(21)

内存

通过名字 a直接控制

变量(它所处的内

存)。

Dog d= new Dog();

d.bark();

变量 d是一个对象引用变量

堆内存

Dog

。。

d

?通过“对象引用”变量 (reference)可

以操纵对象。

byte

8

short

16

int

32

long

64

reference

引用本身也是值,它是可以访问对象

的方式的位码。

?一个对象引用变量存储“一种访问该对象的方式”的位

码。

对象创建的步骤

Dog myDog = new Dog();

1 2 3

1 声明一个引用变量

Dog myDog = new Dog();

告诉虚拟机为该变量分配空间,并命名为

myDog。该变量始终是 Dog类型的。

2 创建一个对象

Dog myDog=new Dog();

告诉虚拟机在堆中为新的 Dog对象分配空间

3 将该对象与引用连接起来。

Dog myDog=new Dog();

现在可以通过这个引用 myDog远程控制该 Dog对象

在堆中的对象

Book b= new Book();

Book c= new Book();

b

1

2

Book 对象

Book 对象

c

垃圾回收的

1

References,2

Objects,2

b

1

2

Book 对象

Book 对象

c

垃圾回收的

1

d

Book d= c ;

d并不引入任何新的对

象,只是把 c的值复制给

d,使得 c,d同时控制

同一个 book对象。

References,3

Objects,2

b

1

2

Book 对象

Book 对象

c

1

d

c = b;

同上,变量 b的值复制给 c,

现在 c与 b都指向了同一个

对象。

References,3

Objects,2

对象的存活和消亡

b

1

2

Book 对象

Book 对象

c

垃圾回收的

1 Book b= new Book();

Book c= new Book();

现在两个 Book对象在堆中

开始各自的生命期。

Active References,2

Reachable Objects,2

b

1

2

Book 对象

Book 对象

c

垃圾回收的

1

b = c;

现在对象 1被废弃,不

再有任何它的引用存在,

它将被回收。

Active References,2

Reachable Objects,1

b

1

2

Book 对象

Book 对象

c

垃圾回收的

1

c = null ;

null引用

null引用不再引用任何对

象。

当然 c仍然是引用变量,

仍然可以通过被赋值,

继续引用其他对象。

3.3 数组

? 在 Java里,数组也是对象

int[] nums;

nums=new int[7];

nums[0]=6;

nums[1]=22;

…,

1 声明一个 int数组变量,它是对数组对象的引用

2 创建一个数组对象,长度为 7,将控制赋值给变量 nums

3 为数组中的每个元素赋值

? 数组的元素由变量组成。

nums

int[]

6 22

整型数组可以存放整型的元素

? 对象数组--元素不是简单数据类型

Dog[] pets;

pets= new Dog[7];

pets[0]= new Dog();

pets[1]= new Dog();

1 声明一个 Dog数组变量

2 创建一个数组对象,长度为 7,将控制赋值给变量 pets

3 注意!每个元素只是一个 Dog引用变量,它的对象还没有创建

? 数组初始化

在数组定义时,可以进行初始化;也可以不进行

int [] a;

char[] b;

double[] c;

- a

- b

- c

表示值未定义

? 也可以不使用 new运算符进行初始化,方法是列举出数组的

元素,称为静态初始化(或显式初始化)。

int [] smallPrimes={2,3,5,7,11,13};

System.out.println(smallPrimes.length);

? 可以对数组进行重新初始化,而不必创建一个新的变量。

smallPrimes=new int[] {17,19,23,29,31,37};

相当于

int[] temp=new int[] {17,19,23,29,31,37};

smallPrimes=temp;

? 数组初始化 — 例

int[] number=new int[3];//变量 number引用了一个 int类型的数组。

double [] value=new double[3];//…

String[] str=new String[3];//…,数组元素是字符串对象

0 0 0 number

0.0 value 0.0 0.0

null null null str

在初始化时,如果没有指定数组元素的值,则所有的元素采用 默认值 初始化

访问数组元素

? 引用单个数组元素的方式是下标法或索引法。

? 在数组中每个元素都有自己的下标,首下标

从 0开始。

? 访问方式,

a[0]=0;

a[1]=1;

a[i+3]=4; 下标可以是非负整数,或者非负整数表达 式。

? 与其它语言不同,Java自动检查下标是否合法,如果认为某

下标非法,将生成一个 IndexOutOfBoundsException的异常,

阻止程序继续执行。

int [] a=new int[100];

a[-1]=0;//illegal

a[100]=0;//illegal

元素访问 ----为所有元素赋值

? 一旦创建了数组,其大小是不可以改变的。

利用”数组名,length”可以知道数组的大小。

? 利用循环语句为数组元素赋值,注意数组下

标从 0开始。

for(int i=0; i

a[i]=i;

? 数组的复制

如果把一个数组变量赋值给另外一个数组

变量,将使双方都指向同一组数据。

int[] d={1,2,3};

int [] e={4,5,6};

d=e;//d is {4,5,6}

问题,下面的程序有错吗

class Books {

String title;

}

class BooksTest{

public static void main(String[] args){

Books[] myBooks=new Books[2];

myBooks[0].title=,Java Cookbook”;

myBooks[1].title=,Thinking in Java”;

int i=0;

while(i

System.out.println(myBooks[i].title);

i++;

}

}

1

2

class Books {

String name;

public static void main(String[] args){

Books[] b=new Books[3];

int z=0;

while(z<4){

z=z+1;

b[z]=new Books();

b[z].name=“bile”;

if(z==1) b[z].name=“ff”;

if(z==2) b[z].name=“kk”;

System.out.println(b[z].name);

}

}

}

class Books {

int id=0;

public static void main(String[] args){

Books[] b=new Books[5];

int z=0;

while(z<3){

b[z]=new Books();

b[z].id=z;

z=z+1;

}

b[3]=b[1];

b[4]=b[1];

b[3]=null;

b[4]=b[0];

b[0]=b[3];

b[3]=b[2];

b[2]=b[0];

}

}

3 画出程序中元素与对

象之间的对应关系,

有的引用是空的,有

的对象被多个引用关

联。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
面向对象的复习 首先介绍S2的java方向课程内容: (1)面向对象的三大特征(封装、继承、多态),目地是:保护数据的安全性,优化代码重用,提高代码的可扩展性、可维护性 (2)java中的常用API 第一部分:lang包、集合、IO流、JDBC数据库访问、线程、网络 第二部分:jsp部分 (一)对象的概念。(实实在在存在的东西) (二)特征: 1、属性:静态特征。名词。 2、方法:动态特征。动词。 (三)类的概念。 由于有太多的对象具有相同的属性及行为,所以我们抽取出一个类的概念。 比如:小红,小李,他们都有姓名、年龄、性别。以及都会说人话,都是直立行走。由于有太多这样的对象都和他们一样有相同的属性及方法,所以我们抽出一个概念“人类”。 再比如说:一辆别克与一辆宝马,它们都有品牌、颜色,以及都能起动,加速等行为,所以我们抽出一个概念“小轿车类”。 再比如说:1、5、9、105、2908等等这些数字,它们有共同的特征: (1)都是数字 (2)都没有小数部分 所以我们抽出一个概念“int”,代表整形。 (四)有了类型,我们才能定义保存当前类型对象的变量。 比如:我们有了int,我们才能定义一个变量,使用这个变量保存一个整数。 那么我们要保存一个人,我们就首先要定义一个人的类型。 如何定义一个人的类型呢? class 人{ String 姓名; //无参,无返回 public void 跑步(){ System.out.println(this.姓名 + "跑步去了"); } //无参,有返回 public String toString(){ String msg="我的名字叫:" + this.姓名; return msg; } } 测试人类,说明什么是无返回,什么是有返回,以及什么是无参,this的意义 class 计算机{ //有参,无返回 public void add(int a,int b){ System.out.println("结果为:" + (a+b)); } //有参,有返回 public double div(int a,int b){ double c=a/b; return c; } } 测试计算机类,说明什么是有参,以及有参有返回的综合应用 讲类与对象时介绍内存空间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值