第四讲类的定义与对象使用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
public class HelloWorld//类 {
public static void main(String[] args)//方法,或叫行为成分 {
System.out.println(“Hello world!!”); } }
类的封装
主讲:武俊琢
Java程序
河南经贸职业学院—信息管理系
1. 变量类型可以是基本数据类型,也可以是引用数据类型,如:数组、 类类型。
2. 成员变量在整个类的内部有效,局部变量只在定义它的方法内有效。 3. 局部变量名可以和成员变量名重名,此时局部变量会隐藏成员变量,
如果想在该方法内部使用成员变量,使用关键字this。
public class People {
import java.awt.Graphics;import java.applet.Applet;
public class HelloApplet extends Applet//类
{
public void paint(Graphics g)//方法
{
g.drawString("Hello world",20,20);
{System.out.println(“x=”+x+”y=”+y+”f=”+f); }
class Triangle{ float sideA,sideB,sideC,lengthSum; void setSide(float sideA,float sideB,float sideC){ this.sideA=sideA; this.sideB=sideB; this.sideC=sideC; }
对象的创建与使用
创建对象 使用对象
构造方法
河南经贸职业学院—信息管理系
主讲:武俊琢
河南经贸职业学院—信息管理系
面向对象编程的基本概念
类和对象
类是定义对象的模板,用来描述一 类事物的共有属性和功能。
对象是一个具体的事物。 例:
汽车类—某辆汽车 学生类—某个学生 窗口类—某个具体的窗口
public class People//P7,例
{
float hight,weight;//状态,或叫数据成分
String head,ear,mouth;//状态
void speak(String s)//方法,或叫行为成分
{
System.out.println(s);
}
}
类的封装
//--------------------------------------------------------------------
用程序,也就是不能被Java虚拟机直接调用。
主讲:武俊琢
类的定义--例2梯形
梯形类: class Ladder {
float a,b,h; void setH(float h) {
this.h=h; } float calculatArea() {
return (a+b)*h/2; }
}
河南经贸职业学院—信息管理系
}
void dance()
{
System.out.println("I can dance!");
} void out()//成员变量的操作只能放在方法中 {
System.out.println("name:"+name);
System.out.println("age:"+age);
}
}
注意:一个类中可以没有main方法,此时它不是Java的application应
这辆汽车(对象)
品牌:保时捷 型号:980 颜色:灰色
------------------加速减速控制 转向控制 刹车控制
汽车(类) 品牌 型号 颜色
---------加速与减速设计 转向设计 刹车设计
……
主讲:武俊琢
类的继承
河南经贸职业学院—信息管理系
类的继承
类的定义可以是分层次的,低层的类具有高层类的属性 和方法,称高层类为父类,低层类为子类。子类使用父 类中定义的方法和变量时,就像它们属于子类本身一样。
可以简化编程的过程,有利于代码的复用。子类除了拥
有父类的方法和变量之外,也可以定义自己方法和变量。
哺乳动物:胎生,能用母乳喂养幼仔。
猫:胎生,能用母乳喂养幼仔。会捉老鼠。
动物
哺乳动物
猫
狗
主讲:武俊琢
鸟 燕子
麻雀
4.2 类的声明
河南经贸职业学院—信息管理系
类是Java语言中的一种复合数据类型,是组成Java 程序的基本要素。Java的类具有两种基本成分:数据和行 为(状态和方法)。类的这两种成分被封装在类体中,与 外界隔开。
2. p=new Person();时,首先在堆内存中为对象分配存储空间,并对 各成员变量进行初始化,数值型为0,布尔型为false,引用型为 null;然后取得这个存储空间的地址(引用),将其“交给”引用 变量p,以后对这个对象的操作全由p去控制。
3. 多次使用new便会创建多个不同的对象。
在方法中定义的一些基本类型的变量和引用变量都是在方法的栈内存 中分配。当在一段代码块(也就是一对{}之间)定义一个变量时, Java就在栈中为这个变量分配内存空间,当超过变量的作用域后, Java会自动释放为该变量分配的内存空间,以前所讲的变量分配都 是在栈内存中存放的。
河南经贸职业学院—信息管理系
说明形式如下:
[构造方法修饰符] 方法名([形式参数列表])
{方法体}
⑴构造方法的名字与类的名字相同
⑵构造方法没有返回类型(千万不要将返回值类型声明为void。也不能在 方法内部使用return返回一个值。)一般将构造方法声明为公共的public 型。⑶构造方法对对象的创建是必须的。实际上Java语言为每一个类提 供了一个默认的构造方法,也就是说,每个类都有构造方法。如果不定 义一个构造方法,Java语言将调用它提供的默认的构造方法对一个新的 对象进行初始化。
主讲:武俊琢
河南经贸职业学院—信息管理系
创建和使用对象
如何调用类中定义的成员变量和成员方法,在Java中类只有实例化为 对象后才能被使用(注:main方法为特殊方法,由系统调用) ,对象 的使用“分三步走”:
1、声明对象 类名 对象名;
2、分配内存(对象的实例化) 对象名=new 类构造方法名([实参表]);
主讲:武俊琢
河南经贸职业学院—信息管理系
方法的重载
在一个类中可以定义同名的方法,但是参数的类型和 个数不能完全相同,同名的方法可以有不同的方法体从而完 成不同的任务,当调用方法时,系统会自动调用与实际参数 类型和个数相匹配的的那一个方法,这就是方法的重载。在 面向对象编程中,这种同一个名字可以有不同解释的现象称 为多态。
例4.3西游记人物(P44)
主讲:武俊琢
河南经贸职业学院—信息管理系
使用对象—例5 梯形
public static void main(String[]args) {
float area; Ladder ladder=new Ladder(); ladder.a=10.0f; ladder.b=20.0f; ladder.setH(5f); area=ladder.calculatArea(); System.out.println("area="+area); }
主讲:武俊琢
成员变量与局部变量
河南经贸职业学院—信息管理系
成员变量:是类的数据成分,在类体中直接定义,定义格式如下: [修饰符] 变量类型 成员变量名列表; 成员变量的定义可以在定义前加修饰符:public、private、protected、
final、static等,用来标识变量的使用范围和性质。 局部变量:在方法体内定义的变量和方法的参数是局部变量。
主讲:武俊琢
作业
河南经贸职业学院—信息管理系
1、编程并上机调试:(60分)
按以下要求创建一个学生类(Student),并完成相应的操作: 1) 其成员变量:姓名(name)、年龄(age)、身高(height)、体重
(weight) 2) 成员方法:setAge—用于给变量age赋值 3) 成员方法(out):按一定格式输出各成员变量的值。 4) 构造方法:通过参数传递,分别对name、height、weight初始化。 5) 最后,创建这个类的对象,并完成对成员变量赋值和输出的操作。
3、使用对象(对象的成员变量及方法的访问) 对象名.方法名、对象名.成员变量名
声明和初始化可以合并: 类名 对象名=new 类的构造方法名( [实参表] ); 说明: 构造方法名与类名相同,如果一个类中未定义构造方法,系统自动定义系
方法一:在同一个类中使用对象
河南经贸职业学院—信息管理系
第四讲 类的定义和对象使用
第4章 类和对象
主讲教师:武俊琢
信息管理系 武俊琢
河南经贸职业学院—信息管理系
***温故***
Java程序的开发过程 数据类型 运算符和表达式 语句
主讲:武俊琢
本讲要点
面向对象编程的基本概念 类的定义
类首部 类体
成员变量 成员方法
0x3000
0 age . . .
堆内存
主讲:武俊琢
河南经贸职业学院—信息管理系
使用对象—例4
方法二:在不同类中使用对象 class Person {
. . . } class PersonTest { public static void main(String[] args) {
Person p; p=new Person(); ="zhangsan"; p.age=20; p.sing(); p.out(); } }
float hight,weight; String head,ear,mouth; void speak(String s) {
System.out.println(s); } 主}讲:武俊琢
成员方法
河南经贸职业学院—信息管理系
成员方法是类的行为成分,声明格式如下:
[修饰符] 返回值类型 方法名([形参列表]) {
主讲:武俊琢
对象的内存模型
河南经贸职业学院—信息管理系
引用数据类型与引用变量:引用数据类型(数组、类)声明的变量为 引用变量,引用变量本身并不存放数据,而只是存放数据的地址。
Java的内存分配—Java把内存划分成两种:栈内存、堆内存
1. Person p;声明对象p时,在栈内存中分配空间,用来存放一个地址, 此时地址未指向任何数据。
}
主讲:武俊琢
类的定义--例1
河南经贸职业学院—信息管理系
定义描述“人”的类: 成员变量:姓名、性别、年龄;
class Person
成员方法:唱歌,跳舞,输出
{
String name,sex;
int age;
void sing()
{
System.out.println("I can sing!");
class Person
{ . . .
public static void main(String[] args)
{
Person p;
p=new Person();
="zhangsan";
p.age=20;
p.sing(); p.out(); }
p 0x3000
栈内存
}
new person() 产生的对象
主讲:武俊琢
构造方法
河南经贸职业学院—信息管理系
我们在例6的Math类中增加一个方法:
public Person() {
System.out.println(“我是构造方法,已被调用!"); }
我们并没有调用对象的Person()方法,但是它却被执行了。 这个方法就是构造方法
主讲:武俊琢
构造方法的说明
}
}
主讲:武俊琢
类的定义
河南经贸职业学院—信息管理系
类首 类体
[修饰符] class 类名 [extends父类名] {
[类成员变量声明;] [类方法声明] }
最简单的类定义 class A { }
类的修饰符有:
public、abstract、final……
extends 父类名:表示所定义的类由“父类”继承而来。 implements 接口列表:该类对指定接口进行实现。
[方法体] [return 表达式;] } 1、修饰符:public 、 private、protected、static、final…… 2、如果方法没有返回值,则使用void关键字。如果有返回值类型,则方 法体中必须有return语句,并且表达式类型与方法类型一致。 3、形式参数列表的形式如下: 类型名 形参名1,类型名 形参名2,…… 如:public void out(int x,int y,float f)