第五讲 类与对象(二)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河南经贸职业学院—信息管理系
this关键字

this关键字只能用在实例方法或构造方法中,代表 使用该方法的当前的对象。
void setAge(int age) { this.age=age; } public static void main(String[] args) { Person p1,p2,p3; p1=new Person(); p2=new Person("孙悟空"); p3=new Person("猪八戒",300,2.8f,380); p1.setAge(18);p2.setAge(19);p3.setAge(20); p1.out();p2.out();p3.out(); }
主讲:武俊琢
河南经贸职业学院—信息管理系
对象变量的赋值
class PersonTest { public static void main(String[] args) { Person p1,p2,p3; p1=new Person(); p2=new Person("孙悟空"); p3=new Person("猪八戒",300,2.8f,380); p1=p2; p1.name= “唐僧”;p1.age=50; p1.out(); p2.out(); p3.out(); } } 结果如何?
主讲:武俊琢 }
河南经贸职业学院—信息管理系
构造方法的重载(二)
class PersonTest { public static void main(String[] args) { Person p1,p2,p3; p1=new Person(); p2=new Person("孙悟空"); p3=new Person("猪八戒",300,2.8f,380); p1.out();p2.out();p3.out(); } }
对象变量的赋值,只是对象中保存的地址发生的变化,而并 未改变对象的状态。 如果一个对象没有任何变量引用它,则它成为垃圾内存。
主讲:武俊琢
河南经贸职业学院—信息管理系
static关键字
静态变量/静态方法:对于成员变量/成员方法的声明,可以在类型的前 面加修饰符“static”,称之为静态变量/静态方法。 类变量/类方法和实例变量/实例方法:静态变量/静态方法属于类而不 属于类的某个实例,可直接由类名来调用(类名· 变量名/类名· 方法名), 因此也叫类变量/类方法;非静态的成员变量/方法必须实例化后通过对 象名来调用(对象名· 变量名/对象名· 方法),因此称为实例变量/实例 方法。 说明:类变量和类方法也可以通过实例调用。 类变量,它属于类所有,且在所有的实例中都共享同一个内存空间; 实例变量,对于每一个实例,这个变量都拥有独自的内存空间。 类方法,在类加载时分配方法入口地址,因此可被类直接调用。 实例方法,只有创建类的对象,才会分配方法入口地址,并只能通过对 象调用方法。 main()方法是静态的,因此java虚拟机在执行main方法时不需创建 main方法所在类的实例就可以直接调用。
1、将P38中方法中的Area类补 充为如右所示的程序。定义新类 AreaTest,并创建Area类的对 象调用每一个成员方法,观察不 同的参数与调用方法的之间的关 系。
主讲:武俊琢
河南经贸职业学院—信息管理系
作业3程序模板
class A { [代码1]//声明一个float型的实例变量a [代码2]//声明一个float型的类变量b void setA(float a) { [代码3]//将参数a赋值给成员变量a } void setB(float b) { [代码4]//将参数b赋值给成员变量b } float getA() { return a; } static float getB() { return b; } void outA() { System.out.println (a); } [代码5]//定义方法outB(),输出变量b
主讲:武俊琢
河南经贸职业学院—信息管理系
package 语句
功能:创建包 格式:package 包名[.子包名[…]]; 要求:此语句必须放在整个源程序第一条语句 例:package p;//(在当前目录下创建一个p包)
package a.b;//(在当前目录下创建a,在a下再创建b)
注意:嵌套的包名之间以圆点分隔(“.”)。如果源文件中省 略了package语句,则文件中定义的类隐含在一个无名包中, 这个无名包就是源文件所在的位置。
主讲:武俊琢ቤተ መጻሕፍቲ ባይዱ
河南经贸职业学院—信息管理系
类变量/类方法、实例变量/实例方法
class StaticDemo { static int x; int y; public static int getX() { return x; } public static void setX(int newX) { x=newX; } public int getY() { return y; } public void setY(int newY) { y=newY; } } 主讲:武俊琢
3、静态方法中不能使用super和this变量。
例3: class A { static int i=10; String s="hello world!"; public static void main(String[] args) { System.out.println("i="+i); // System.out.println("s="+s); } 主讲:武俊琢}
主讲:武俊琢
河南经贸职业学院—信息管理系
包的概念
为了便于管理大型软件系统中数目众多的类,解决类命名冲 突的问题,java引入了包。
Java中的包与文件系统的目录层次结构是一一对应的。一个 包中可以包含子包,包名与子包名间用“· ”分隔。
Java提供的类和接口是按不同的用途分别放在不同的包中。 java.applet java.awt java.lang java.io java.net java.util

对象的创建和使用


构造方法

主讲:武俊琢
河南经贸职业学院—信息管理系
本讲要点

方法的重载

成员方法的重载 构造方法的重载

static变量和static方法 包

package命令 import命令
主讲:武俊琢
河南经贸职业学院—信息管理系
方法的重载
在一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同, 即或者是参数的个数不同,或者是参数的类型不同。 同名的方法可以有不同的方法体从而完成不同的任务,当调用方法时,系 统会根据调用方法的实际参数类型和个数自动调用相应的方法,这就是方 法的重载。
内存模型分析
实例变量
a.y
b.y
0 0
20
40
a.y
b.y
主讲:武俊琢
河南经贸职业学院—信息管理系
static应用注意事项
总结(静态成员在使用时应该注意): 1、静态方法中只能直接调用同类中其他静态成员,而不能 调用非静态成员。反之,则可以。 2、静态成员的引用直接通过类名引用,也可以通过该类的 对象来引用。
class Heshang { void dashui(String s) { System.out.println (s+"挑水喝"); } void dashui(String s1,String s2) { System.out.println (s1+"和"+s2+"抬水喝"); } void dashui(String s1,String s2,String s3) { System.out.println (s1+" "+s2+" "+s3+"没水喝"); } public static void main(String[]args) { Heshang h=new Heshang(); h.dashui("孙悟空"); h.dashui("孙悟空","猪八戒"); h.dashui("孙悟空","猪八戒","沙和尚"); } }
主讲:武俊琢
河南经贸职业学院—信息管理系
作业
class Area//作业1 { float getArea(float r) { System.out.print("方法一:"); return 3.14f*r*r; } double getArea(float x,int y) { System.out.print("方法二:"); return x*y; } 2、将作业1中Area与AreaTest float getArea(int x,float y) 类分别放在不同的包中重新编译 { System.out.print("方法三:"); 运行。 return x*y; 3、按程序模板(Test.java)要 } double getArea(float x,float y,float z) 求编写源文件,将[代码x]按其后 { System.out.print("方法四:"); 的要求替换为java程序代码。分 return (x+x+y*y+z*z)*2.0; } 析程序输出结果。 }
主讲:武俊琢
河南经贸职业学院—信息管理系
引入java包中的类和接口import语句
一般情况下import语句紧跟在package语句之后 功能:将其他包中的类引入到当前程序中。 格式:import 带包层次结构的类名; 说明: 1、引入包时,类名可以使用通配符“*”,表示包模 块中某个层次的类全引入进来。 例: import java.io.*; import java.awt.Graphics; 2、java会自动引入lang包下的所有类和接口。 3、前缀包名法:不用import语句也可以引入其他包中 的类和接口。
StaticDemo x 0
getx() 入口地址 setx() 入口地址
河南经贸职业学院—信息管理系
public class ShowDemo StaticDemo { public static void main(String[] args) x 0 { System.out.println("静态变量 x="+StaticDemo.getX()); StaticDemo a=new StaticDemo(); StaticDemo b=new StaticDemo(); x 10 a.setX(10); a.setY(20); b.setX(30); x 30 b.setY(40); System.out.println("静态变量 a.x="+a.getX()); System.out.println("实例变量 a.y="+a.getY()); System.out.println("静态变量 b.x="+b.getX()); System.out.println("实例变量 b.y="+b.getY()); System.out.println("静态变量 x="+StaticDemo.getX()); } }
主讲:武俊琢
河南经贸职业学院—信息管理系
构造方法的重载
class Person { String name;int age;float height,weight; public Person() { age=18; name="无名"; } public Person(String name) { this.name=name; } public Person(String name,int age,float height,float weight) { this.name=name; this.age=age; this.height=height; this.weight=weight; } void out()//成员变量的操作只能放在方法中 { System.out.println(“姓名:”+name+“ 年 龄:”+age+“岁”+ " 身高:" +height+"米"+" 体重:"+weight+"斤"); System.out.println (); }
河南经贸职业学院—信息管理系
第五讲 类与对象(二)
方法的重载、static、包
信息管理系 武俊琢
主讲教师:武俊琢
河南经贸职业学院—信息管理系
** 温故 **

类的定义

成员变量说明 成员方法说明 创建对象 通过对象引用成员变量和成员方法 构造方法与一般成员方法的区别 P38,构造方法不是void型
相关文档
最新文档