版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、项目项目4 学生基本信息管理学生基本信息管理-类和对象类和对象Company Logothemegallery主要内容学习目标及重、难点1任务学习2课堂实践3总结与要求4任务介绍任务一 理解类和对象的概念及其关系,会分析和设计银行帐户对象和储户对象任务二 定义平面上任意两个点p1,p2,并计算p1到原点的距离,以及点p1到p2的距离任务三 定义和处理员工信息任务四 处理学生基本信息任务分析支撑知识讲解p 面向对象基本概念p 类的定义 、对象的创建p 构造方法学习目标 重点、难点Company Logo重点类的概念、类和对象的关系类的定义对象的创建和使用类修饰符的使用难点类与实例的关系对象的创建
2、属性和方法访问控制权限学习目标掌握类和对象的概念理解并掌握面向对象分析和设计的方法掌握类定义的格式属性方法掌握对象的创建和使用掌握构造函数的作用和特点掌握方法重载掌握访问控制权限的使用学习内容面向对象的基本概念类的定义属性方法对象的创建和使用构造函数的使用方法重载实现访问控制权限回想v Java 具有8种基本数据类型v boolean、char、byte、int、short、long、float 及 doublev Java 中的运算符可分为四类:v 算术运算符、位运算符、关系运算符、逻辑运算符v 数据的输入输出v Java 支持下列控制结构v 顺序、选择、循环、跳转v 数组v 可用来将同一类
3、型的数据存储在连续的内存位置。v 声明、初始化,援用,常见应用数组长度、最值等)v main方法参数的使用v 字符串的使用v Stringv StringBuffer/StringBuilder本章背景v本章将学习v面向对象的基本概念和特征,面向对象设计方法的基本思想。v如何自定义类,创建和使用对v然后实现方法重载v学习目标v掌握面向对象程序技术的基本概念v掌握类与现实世界的关系,并能根据需求正确对其进行抽象v通过自定义类的设计,掌握类成员变量,成员方法定义和使用,掌握构造函数的定义和使用,掌握方法重载任务学习Company Logov任务描述任务描述v任务一:理解类和对象的概念及其关系,任务
4、一:理解类和对象的概念及其关系,会分析和设计银行帐户对象和储户对象会分析和设计银行帐户对象和储户对象任务学习Company Logov 支撑知识介绍支撑知识介绍v 面向对象的基本概念面向对象的基本概念v 类和对象的概念和关系类和对象的概念和关系v 封装性、多态性、继承性封装性、多态性、继承性v 面向对象的分析和设计方法面向对象的分析和设计方法程序语言的发展人类更容易理解v面向机器面向机器(机器语言、汇编语言机器语言、汇编语言)v可读性、可维护性、移植性差;效率高可读性、可维护性、移植性差;效率高v面向过程面向过程v中心:算法中心:算法+数据结构数据结构v缺陷:随应用程序的规模扩大,操作与数据分
5、离所带缺陷:随应用程序的规模扩大,操作与数据分离所带来的维护工作量越来越大来的维护工作量越来越大v不适用于不适用于GUI界面、事件驱动编程界面、事件驱动编程v面向对象面向对象v人类先进的模式应用到计算机模型。能更直接的描述人类先进的模式应用到计算机模型。能更直接的描述客观存在的事物。客观存在的事物。v从现实世界中客观存在的事物出发来设计,并在软件从现实世界中客观存在的事物出发来设计,并在软件开发中运用人类的自然思维方式。开发中运用人类的自然思维方式。面向对象v对象对象v世界上所有的事物都可以称为对象。世界上所有的事物都可以称为对象。v包括有形一台电视机等和无形帐户、一项记包括有形一台电视机等和
6、无形帐户、一项记录等)录等)v对象两大要素对象两大要素v属性对象静态特征,可以用某些数据描述)属性对象静态特征,可以用某些数据描述)v操作对象动态特征、又称方法,具有的行为或功操作对象动态特征、又称方法,具有的行为或功能)能)v如电视如电视v属性有:品牌、尺寸、重量等属性有:品牌、尺寸、重量等v操作有:收视、选台、音量调节等操作有:收视、选台、音量调节等v按照子类与父类的关系,把若干个对象类组成一个按照子类与父类的关系,把若干个对象类组成一个层次结构的系统层次结构的系统v对象彼此之间仅能通过传递消息互相联系。对象彼此之间仅能通过传递消息互相联系。Company LogoCompany Logo
7、课堂思考Company Logo思索:一只大雁要从北方飞往南方第一步:抽象出对象-大雁第二步:识别该对象的属性-一双翅膀,黑色的羽毛第三步:识别该对象的行为-飞行、觅食等第四步:封装属性和行为来描述大雁这类动物。总结:类是封装对象属性和行为的载体 对象是类的一个实例面向对象v类类v对具有相同基本特征对象的一种抽象,是同一类对具有相同基本特征对象的一种抽象,是同一类事物的统称事物的统称v类也是类也是Java中最重要的数据类型,自定义类型中最重要的数据类型,自定义类型v由类定义生成的数据称为这个类的实例或对象。由类定义生成的数据称为这个类的实例或对象。v类和对象关系类和对象关系v类是一个抽象的概念
8、类是一个抽象的概念v对象是一个具体的类的实例对象是一个具体的类的实例Company Logo一个类可以生成多个不同的对象,具有不同的属性值例子Company Logo面向对象Company Logo例如:定义一个类圆class Circle /属性 String color; /颜色 int length; /半径 /方法 void expand() 方法体 /方法:放大 void reduce() 方法体 /方法:减少对象具有属性和行为。与之相对应,类在定义时,需要声明类的变量数据和方法。Circle c1=new Circle() /生成类Circle的实例c1类v属性属性-成员变量成员变
9、量v属性称为数据成员,或者成员变量属性称为数据成员,或者成员变量v描述类中所定义的数据,对客观世界实体所描述类中所定义的数据,对客观世界实体所具有性质的抽象具有性质的抽象v类的每个实例都有自己特有的属性值类的每个实例都有自己特有的属性值Company Logo例如Circle类中所定义的代表半径、颜色等的数据成员,就是Circle类的属性类v方法方法v在类中实现的操作,它是功能实现的基本单位。在类中实现的操作,它是功能实现的基本单位。v方法描述了对象执行操作的具体实现算法方法描述了对象执行操作的具体实现算法Company Logo一个方法有以下几个部分构成:方法名输入参数可空) 返回值可空)执
10、行代码段为了使Circle类的对象可以在屏幕上显示自己,可以定义方法show()int show (int i,float j)/ 返回值 方法名 输入参数 /实现代码类v音讯音讯v软件对象通过相互间传递消息来相互作用和通信,一软件对象通过相互间传递消息来相互作用和通信,一个消息由三部分组成个消息由三部分组成:v 接受消息的对象接受消息的对象v 接收对象要采取的方法接收对象要采取的方法v 方法需要的参数方法需要的参数Company Logo对象对象B对象对象 A音讯音讯任务学习Company Logov 完成任务步骤分析完成任务步骤分析v 了解对问题的描述了解对问题的描述v 建立使用实例建立使
11、用实例,分析整个应用实现的场景分析整个应用实现的场景ATM必须允许用户插入银行卡,选择合适的帐户,然后存钱、取钱、查询余额;一个银行帐户必须记录帐户的ID和当前余额;支票帐户和现金帐户必须支持存钱和取钱。“取钱“是ATM的一个应用实例存钱、查询余额、验卡、取钱-数目超过余额等也是),步骤有:选择银行列出的帐户类型输入取钱的数额不超过余额)取出钱取出卡任务学习Company Logov 完成任务步骤分析完成任务步骤分析v 提取候选类和方法提取候选类和方法(1要发现对象以及对象的属性:在以上使用实例中寻找名词,如帐户(2要发现方法:在使用实例中寻找动词,如查询(3确定哪些是对象,哪些是对象的属性:
12、普通,属性是一些简单值,如余额。而对象是由一些简单值组合而成,如帐户包括户名,余额,开户时间等。(4把找到的方法分配对合适的对象,使其成为对象的成员方法。一些属性和对象:银行、帐户、余额、银行卡等找到的方法包括:取钱、选择帐户、查询余额、取卡等任务学习Company Logov 任务解决任务解决v 确定银行帐户对象和储户对象:确定银行帐户对象和储户对象:BankAccountint accountid /帐号double balance/余额void credit(double money)/存入钱到帐户double getbalance(int id)/查询帐户中的余额void debit(
13、double money) /从帐户中取钱Personint id /身份证号int age /年龄String name/姓名void pressButton() /按钮void inputCard()/插卡绿色:属性绿色:属性紫色:方法紫色:方法这两个对象之间存在的关系为:一个储户可以有多个银行帐户,一个帐户只能属于一个储户。面向对象特性v三个主要特性三个主要特性v继承性继承性v封装性封装性v多态性多态性Company Logo继承性:指一个新的类继承原有类的基本特征,并可增加新的特性继承具有传递性,Java是单继承封装是一种信息隐蔽技术,封装的目的隐藏类的实现细节迫使用户通过接口去访问数
14、据增强代码的可维护性封装的实现Java通过访问控制权限来实现封装,访问权限有4种:public, protected, 缺省, private多态性是指一个名称对应有多种不同的功能,提供灵活性类的多态性主要通过方法的重载,覆盖和接口来实现面向对象v课堂思考课堂思考v小王本来体重小王本来体重70kg,经过减肥,体重降到,经过减肥,体重降到45kg,试从这个问题领域中识别对象、类、属,试从这个问题领域中识别对象、类、属性、状态和状态的变化。性、状态和状态的变化。v1) 类:人。类:人。v2) 对象:小王。对象:小王。v3) 属性:体重。属性:体重。v4) 形状:形状:70kg。v5) 状态的变化:
15、小王的减肥行为导致体重下降状态的变化:小王的减肥行为导致体重下降Company Logo任务学习Company Logov 总结总结v 介绍面向对象基础知识介绍面向对象基础知识v 类和对象类和对象v 面向对象分析和设计的方法面向对象分析和设计的方法v 三个主要特性:三个主要特性:v 继承性继承性v 封装性封装性v 多态性多态性任务学习Company Logov任务描述任务描述v任务二:任务二: 定义平面上任意两个点定义平面上任意两个点p1,p2,并计算,并计算p1到原点的距离,以及点到原点的距离,以及点p1到到p2的距离的距离任务学习Company Logov 支撑知识介绍支撑知识介绍v 类的
16、定义类的定义v 属性的定义属性的定义v 方法的定义方法的定义v 方法定义方法定义v 方法调用方法调用v 方法重载方法重载v 构造方法构造方法v 主方法主方法v 访问控制修饰符访问控制修饰符v 其他修饰符其他修饰符类的定义v类类v类是封装对象的属性和行为的载体类是封装对象的属性和行为的载体vJava中最重要最基本的数据类型,由两种基本成中最重要最基本的数据类型,由两种基本成员构成:员构成:v数据属性)数据属性)v可以是基本数据类型可以是基本数据类型v也可以是某个类的实例也可以是某个类的实例v方法方法 v表示对象具有的行为,与函数类似,只能在类内表示对象具有的行为,与函数类似,只能在类内定义定义C
17、ompany Logoccit271 Java 类的定义-语法规范类的修饰符 访问控制权限修饰符public、缺省 、private和protected不能)抽象和最终类修饰符final,abstract,static不能用 )类修饰符为可选项extends继承父类implements 实现接口n类是组成Java程序的基本要素。它封装了一类对象的属性和方法,是这一类对象的原型。类的修饰符类的修饰符 class 类名称类名称 extends 父类名称父类名称implements 接口名称列表接口名称列表 成员变量定义及初始化;成员变量定义及初始化; 构造函数定义构造函数定义; 方法定义及方法体;
18、方法定义及方法体;类体,其中定义了该类中所有的变量和类体,其中定义了该类中所有的变量和该类所支持的方法,称为成员变量和成该类所支持的方法,称为成员变量和成员方法。员方法。类体1 Java 类的定义v类名类名v必须符合必须符合Java标识符的命名规则标识符的命名规则v以字母、字符以字母、字符_或或”$”开头开头v不能使用与不能使用与Java关键字相同的类名关键字相同的类名v类名通常以大写字母开头,如果类名由多个单词类名通常以大写字母开头,如果类名由多个单词组成,则每一个单词的开头字母要大写组成,则每一个单词的开头字母要大写v类名应尽量有意义,便于程序阅读者的理解和程类名应尽量有意义,便于程序阅读
19、者的理解和程序的维护,养成良好的编程习惯。序的维护,养成良好的编程习惯。2、类的修饰符v 访问控制修饰符访问控制修饰符v publicv 公开类:类成员可以被本包和不同包的任何类、对象所用;公开类:类成员可以被本包和不同包的任何类、对象所用;反之非公开类通常为同一个包中其它非公开类或公开类服务。反之非公开类通常为同一个包中其它非公开类或公开类服务。v 缺省缺省v 只能被同一个只能被同一个 包中的其他类、对象引用或继承。包中的其他类、对象引用或继承。v protectedv 不能用不能用v privatev 不能用不能用v 抽象类修饰符抽象类修饰符v abstract 后面学后面学v 最终类修饰
20、符最终类修饰符v final 后面学后面学留意:abstract和final是矛盾的,不能同时选择,要么都不用,要么只能选一个。3、成员变量定义-语法规范变量修饰字变量修饰字 变量数据类型变量数据类型 变量名变量名1,变量名变量名2=变量初值变量初值;public | protected |缺省缺省| private static final transient volatilen 成员变量的类型n 可以是基本类型n 也可以是引用类型类,接口,数组)n 在一个类中的成员变量唯一n 变量必须先定义,后使用n 可以设置初值,如果没有设置,则会有默认值n 整型 (byte、int、short、lon
21、g0n 字符型 (char)u0000n 布尔型 (booleanfalsen 实型 (float double0.0n 引用类型 (数组、类、接口null3、成员变量定义例如例如: public class Date1 /类声明类声明 int year,month,day; /成员变量声明成员变量声明 或者:或者:byte b;double d1=0.23,d2=56.7;boolean mycom=true;char mc=b;String s“abc”;成员变量定义-修饰符v访问控制修饰符有4种v public、protected、缺省、 private,用来规定变量的访问权限vstat
22、ic v指明该变量是一个类变量(静态变量);若无,则为实例变量属于对象)vfinal v指该变量是一个常量,不可改变ccit334、访问修饰符的控制范围访问修饰符本类同一包中的类或子类不同包中的非子类不同包中的子类publicprivateprotected缺省 :可访问class A public int x;/任何类的对象都能对它读写完全暴露给使用者,除非特殊,一般不定义 protected int y;/同一个包中任何类或不同包中子类方法能进行读写 private int z;/只有本类自身成员才能访问 int w;/同一个包中任何类对象可以进行读写 void setX(int a) z
23、=a;/可以,在A类内部public class TestA public static void main(String args) A pt=new A();/通过new运算符生成一个A类对象 pt.x=10; /因为是public,可对A类的对象中x成员进行读写 pt.y=20;/如果在同一个包,是可以的。否则不可以 pt.z=30;/不行,只有在A类内部才可以访问,外部无权 假设两个类定义在同一个包中Class Point static int x;/静态类变量静态类变量 int y; /实例变量实例变量Public class TeatPoint public static void
24、 main(String args) Point.x=10;/可以。可以。X一直存在,随时可用,与有无对象无关一直存在,随时可用,与有无对象无关 Point.y=10;/不可以,是实例变量,必须先创建对象后才能使用不可以,是实例变量,必须先创建对象后才能使用 Point p1=new Point(),p2=new Point(),p3=new Point(); p1.y=10; /可以。可以。P1对象内部含有自己的变量对象内部含有自己的变量 p2.y=20; /可以。可以。P1对象内部含有自己的变量对象内部含有自己的变量 p3.y=30; /可以。可以。P1对象内部含有自己的变量对象内部含有自
25、己的变量 p1.x=20;/可以,所有对象共享一个类成员变量可以,所有对象共享一个类成员变量x,它一直存在,随时可,它一直存在,随时可用用 例如:控制范围-1同一个类内可以访问任何访问权限的变量。package test;public class Demo2void test() Demo1 dm1=new Demo1(); dm1.priInt=1; /错误 Int=1; dm1.defInt=1; dm1.pubInt=1;在同一个包下,但Demo2对Demo1中的private成员没有访问权限。package test;public class Demo1 private
26、int priInt; protected int proInt; int defInt; public int pubInt; void test() priInt=1; proInt=1; defInt=1; pubInt=1; package test.t1;import test.Demo1;public class Demo4void test() Demo1 dm1=new Demo1(); dm1.priInt=1; /错误 Int=1;/错误 dm1.defInt=1;/错误 dm1.pubInt=1;不同包下,只能访问Demo1中的public成员。5、方法定义
27、-语法规范方法修饰字方法修饰字 返回类型返回类型 方法名称方法名称(参数参数1,参数参数2,) throws exceptionList (statements;) /方法体:方法的内容方法体:方法的内容public | protected|缺省 | private static final | abstract native synchronizedn 返回类型n 可以是任意的Java数据类型n 当一个方法不需要返回值时,返回类型为void。n 参数的类型n 可以是简单数据类型n 也可以是引用数据类型数组、类或接口)n 参数传递方式是值传递。n 方法体n 对方法的实现n 包括局部变量的声明以
28、及所有合法的Java指令。n 局部变量的作用域只在该方法内部。举例:方法定义v 举例:举例:v final void move(int dx,int dy) throws IOExceptionv x+=dx;v y+=dy; v v 举例:举例:v class Testv int a,b;v void change(Test obj) v obj.a=50;v obj.b=40; /可以在函数中改变对象状态可以在函数中改变对象状态v void setTest(int x,int y)v a=x;v b=y; v v 6、方法定义-修饰符v 方法命名v 符合标识符规则v Java中允许同名方法
29、存在,但方法的参数列表应不同(方法的重载)v 访问控制权限v public 、pretected、缺省、private含义同成员变量v 其他修饰符v staticv 类方法静态方法),可直接用类名来调用,随时可用。v abstractv 抽象方法,只有声明部分,方法体由子类来实现v finalv 最终方法,不能被子类重构v nativev 本地方法,由本地其他语言代码实现v synchronizedv 同步,将在“多线程中介绍v staticv 用于修饰类的数据成员和方法,表示该成员为静态成员v 基本形式:v static 数据类型 变量名;v static 返回类型 方法名(参数列表)v v
30、 /方法体v 修饰符staticclass A static int b=0; /静态成员变量 static void get() /静态方法 n static修饰的n 类成员或静态成员n 在定义时就静态分配了内存空间,在生成类对象之前就可以使用静态成员n 静态成员是属于整个类的,一个类的多个对象可以共享该静态成员n 无static修饰的n 实例成员n 属于某个对象或实例,必须要定义对象才能使用修饰符staticv对静态成员的访问方法对静态成员的访问方法v先生成该类的实例对象),然后再通过点运算先生成该类的实例对象),然后再通过点运算符访问符访问vA a=new A();va.b=5;va.g
31、et()v是不生成实例,直接在类名后加上点运算符和静是不生成实例,直接在类名后加上点运算符和静态成员名态成员名vA.b=5;vA.get()Company Logostatic方法内部随时可以访问static成员变量和方法,要访问非static成员变量或方法,必须先创建一个对象。非static方法随时访问静态方法不能被重载和重写修饰符staticv对静态成员的访问方法对静态成员的访问方法vstatic方法内部方法内部v可以访问可以访问static成员变量和方法成员变量和方法v不能访问非不能访问非static成员变量或方法,必须先创建成员变量或方法,必须先创建一个对一个对v非非static方法方
32、法v可以访问可以访问static成员变量和方法成员变量和方法v可以访问非可以访问非static成员变量和方法成员变量和方法Company Logoclass Point static int x; int y; public static void main(String args) x=10;/可以,类变量随时可以使用 y=20;/不可以。必须先创建一个类对象 Point pt=new Point(); pt.y=20;/可以通过对象pt来访问pt对象中的变量y 修饰符-finalvfinal关键字关键字v最终的,不能修改最终的,不能修改v可以修饰类,成员变量和方法。可以修饰类,成员变量和方
33、法。v最终类,不能再有子类;最终类,不能再有子类;v最终方法,不能再被重写;最终方法,不能再被重写;v最终属性,初始化后,不能再被赋值。常量最终属性,初始化后,不能再被赋值。常量Company Logofinal class A final double PI=3.1416; final double area(double r) return (PI*r*r); class FinalTest static public void main(String arg) A a = new A( ); System.out.println(area= +a.area(5.0); a.PI=100或
34、重写方法area()都是错误的修饰符 abstractv抽象方法v用abstract修饰的方法,v抽象方法只有方法的返回值、名称和参数列表,没有函数体。v抽象类v用abstract修饰的类v抽象类是一种没有完全实现的类。v不能用它产生具体的实例Company Logo7、方法v类成员方法v方法定义v方法调用v方法重载v构造方法v主方法Company Logo方法定义v 返回值类型返回值类型v 可以是基本数据类型、数组或类可以是基本数据类型、数组或类v 如果方法不返回任何值,必须声明为如果方法不返回任何值,必须声明为void(空空)v 参数列表参数列表v 由零个或多个参数构成,参数之间用逗号分隔
35、,每个参数由一个数据由零个或多个参数构成,参数之间用逗号分隔,每个参数由一个数据类型和一个标识符构成类型和一个标识符构成v 方法体方法体v 定义了该方法具体是如何实现的,是整个方法的核心和重点定义了该方法具体是如何实现的,是整个方法的核心和重点v 局部变量局部变量 v 方法体中定义的变量方法体中定义的变量v 参数列表参数列表Company Logo方法修饰符 返回值类型 方法名 (参数列表) 方法体方法调用v调用方法v实参在调用时会代替方法定义中的形参。v要求实参的类型、个数和顺序必须与定义中的形参表一致。v方法调用的形式有两种v一种是把方法调用作为一个表达式语句v另一种是作为一个表达式Com
36、pany Logo方法重载v方法重载v一个类中多个方法具有相同的方法名,但参数的类型或参数的数量不同v静态多态:编译系统调用方法时,系统自动根据实际参数的数量和类型匹配Company Logopublic class MethodOverload public static void main(String args ) MethodOverload obj=new MethodOverload(); System.out.println(obj.square(3)+” ”+obj.square(1.5); int square( int x ) return x * x; double sq
37、uare( double y ) return y * y; 构造方法v 类的特殊的方法,用来初始化对象类的特殊的方法,用来初始化对象v 要求要求v 构造函数的方法名与类名一致构造函数的方法名与类名一致v 构造函数没有返回类型,不能有构造函数没有返回类型,不能有voidv 只能通过只能通过new关键字在创建对象的时候调用关键字在创建对象的时候调用v 留意留意v 在创建一个类的新对象时,系统会自动调用该类的构造函在创建一个类的新对象时,系统会自动调用该类的构造函数为新对象初始化数为新对象初始化v 每一个类至少都有一个构造方法每一个类至少都有一个构造方法v 当某个类的没有声明构造方法时,系统会为其
38、自动生成一当某个类的没有声明构造方法时,系统会为其自动生成一个默认构造方法无参数、无方法体)。个默认构造方法无参数、无方法体)。v 构造方法使用其参数初始化新对象的状态。构造方法使用其参数初始化新对象的状态。v 构造函数可以重载构造函数可以重载(参数序列不同参数序列不同)。当创建对象时,首先用new分配该对象的内存空间,然后调用某一个构造方法,对该对象内存空间初始化。Main方法v主方法主方法v是是Java应用程序执行的起点应用程序执行的起点v与其它方法相似,它必须在类的内部定义与其它方法相似,它必须在类的内部定义v留意:留意:v一个一个Java源文件可以包含一个或多个类源文件可以包含一个或多
39、个类v但在但在Java的的Application中中v必须有而且只能有一个类包含必须有而且只能有一个类包含main方法方法v且该程序文件的名称必须与包含且该程序文件的名称必须与包含main方法的类方法的类的类名一致。的类名一致。Company Logomain方法必须是公有的public),静态的static),没有返回值,有一个字符串数组参数,用于进行参数的传递。任务学习Company Logov 完成任务步骤分析完成任务步骤分析v 一是如何通过类定义描述一个具体的点一是如何通过类定义描述一个具体的点v 一个类一个类Point表示抽象的点,定义两个成员变量表示抽象的点,定义两个成员变量x,
40、y表示表示点对应的具体位置点对应的具体位置v 二是如何计算点到原点的距离二是如何计算点到原点的距离v Math中已经实现了求平方根的方法中已经实现了求平方根的方法sqrt()()v 三是如何计算点与点之间的距离三是如何计算点与点之间的距离v 同上同上v 编写主类,测试调用编写主类,测试调用任务学习Company Logov 任务解决任务解决v 编写程序编写程序v 递交递交任务学习Company Logov 总结总结v 类的定义主要包括成员变量和成员方法的定义类的定义主要包括成员变量和成员方法的定义v 一般语句不能单独放在类中,必须放到方法中一般语句不能单独放在类中,必须放到方法中v 成员变量的
41、作用范围为整个类成员变量的作用范围为整个类v 成员方法方法的返回值,方法的局部变量,可以重载)成员方法方法的返回值,方法的局部变量,可以重载)v 主方法主方法 v 访问控制修饰符访问控制修饰符 public 、protected、缺省、缺省、privatev 修饰类修饰类v 修饰成员变量或成员方法修饰成员变量或成员方法v 其他修饰符其他修饰符v staticv finalv abstract任务学习Company Logov任务描述任务描述v任务三:定义和处理员工信息任务三:定义和处理员工信息任务学习Company Logov 支撑知识介绍支撑知识介绍v 成员变量和局部变量成员变量和局部变量v
42、 作用范围作用范围v 变量隐藏变量隐藏v this关键字关键字v 对象对象v 对象创建对象创建v 访问对象访问对象v 对象消除对象消除v 包包v packagev Importv 再淡再淡static成员变量和成员方法成员变量和成员方法成员变量和局部变量v 成员变量成员变量v 在类体中定义在类体中定义v 在整个类中都有效在整个类中都有效v 局部变量局部变量v 在方法中定义在方法中定义v 方法体中声明方法体中声明v 方法中的形参方法中的形参v 只在本方法中有效只在本方法中有效Company Logoclass Data int x=12,y=5; /成员变量 public void sum()
43、int s; /局部变量 s=x+y; class Data int x=12,y=5; public void sum() int x=3; /局部变量x屏蔽了成员变量 int s; s=x+y; 名字隐藏:局部变量名与成员变量名相同,则成员变量被屏蔽 名字隐藏和this关键字v名字隐藏名字隐藏v局部变量与类的成员变量同名,则局部变量会隐藏成局部变量与类的成员变量同名,则局部变量会隐藏成员变量,称为名字隐藏。员变量,称为名字隐藏。v若要访问被隐藏的成员变量,则必须使用若要访问被隐藏的成员变量,则必须使用thisthis来访问。来访问。vthisthisv用于代表当前正在使用或访问的对象用于代
44、表当前正在使用或访问的对象v每一个对象内部都有一个每一个对象内部都有一个thisthis变量,用于指明自身地变量,用于指明自身地址址Public class Point private int x; private int y; public Point()x=0;y=0; public Point(int x)/int x为局部变量与成员变量x同名,成员x隐藏 this.x=x;y=0;/局部变量x的值赋给成员变量x public Point(int x,int y) this.x=x;this.y=y; public int getX()return x; public int getY(
45、)return y; public void setX(int x)this.x=x; public void setY(int y)this.y=y; public void setPoint(int x,int y)this.x=x;this.y=y; public void setPoint(Point pt)x=pt.x;y=pt.y;this关键字vthisv表示对当前对象的引用表示对当前对象的引用v表示使用类的成员变量,而非局部变量,尤其是表示使用类的成员变量,而非局部变量,尤其是()在成员变量名字隐藏与局部变量同名时()在成员变量名字隐藏与局部变量同名时v用于构造方法中引用满足指
46、定参数类型的构造方用于构造方法中引用满足指定参数类型的构造方法法v只能用一个,且必须放在方法体的第一个语句只能用一个,且必须放在方法体的第一个语句Company Logopublic class Employee private String name; private int salary; public Employee() this(“Unknown”); public Employee(String n, int s) name = n; salary = s; public Employee(String n) this(n,0); /引用本类的构造方法,只能放在第一 对象v对象对象
47、v是类的实例;创建类的目的是以类为模板创建对是类的实例;创建类的目的是以类为模板创建对象。象。v对象的声明周期对象的声明周期v创建对象创建对象v使用对象使用对象v删除对象删除对象一个类可以一个类可以有多个实例有多个实例对象的创建对象的使用对象的清除对象的创建v 对象的创建对象的创建 需要两个步骤需要两个步骤v 对象创建之前要先进行声明,但没有分配空间,为对象创建之前要先进行声明,但没有分配空间,为null,不能使用不能使用v Car demoCar;v 然后通过然后通过new操作符创建一个对象实例,真正引用一个操作符创建一个对象实例,真正引用一个对象:对象:v demoCar = new Ca
48、r();v 也可以两步合一:也可以两步合一: Car demoCar new Car();v 对象的构造过程对象的构造过程v 为对象开辟空间,并对对象的成员变量进行缺省的初始化;为对象开辟空间,并对对象的成员变量进行缺省的初始化;v 对成员变量进行指定的初始化;对成员变量进行指定的初始化;v 调用构造方法。调用构造方法。new 先为该对象从堆中申请内存空间,自动调用构造行数对该对象内存进行初始化,最后返回对象的引用,若内存不够,返回null。对象的使用v对象的使用对象的使用v访问对象的成员变量和方法访问对象的成员变量和方法v对象做类的成员对象做类的成员v方法中使用对象方法中使用对象v对象数组对
49、象数组对象的使用访问对象的成员变量和方法v 访问对象的成员变量和方法访问对象的成员变量和方法v 通过运算符通过运算符“.”进行访问对象的成员变量和方法进行访问对象的成员变量和方法v 例如:例如:v MyDate date = new MyData();v int day;v day = date.day; /引用引用date的成员变量的成员变量dayv date.tomorrow(); /调用调用date的方法的方法tomorrow()引用对象类型v 复合援用类型v 类v 数组v 接口 v 引用类型v 指向一个对象在内存中的位置,本质上它是一种带有很强的完整性和安全性限制的指针v 引用型变量只
50、支持有限的逻辑判断:v 相等判断是否同一个对象的引用):= 和!=v 类型判断是否为一个类的实例):instanceof例如:使用对象1class Pointpublic int x=0, y=0;public Point(int x,int y)this.x=x;this.y=y;public int getX() return x;public int getY() return y;public void setXY(int x,int y) this.x=x; this.y=y; class Testppublic static void main(String args)Point
51、pa=new Point(23,94);pa.x=44; /如 x声明为private则无法使用此句,改为 setXY(44,2);System.out.println(pa=(+pa.getX()+ ,+pa.getY()+);例如:使用对象例如:使用对象2/ Date1( )是构造方法, main()方法是类Date1中的方法 public class Date1 int year,month,day; Date1(int y,int m,int d) year=y; month=m; day=d; void print() System.out.println(year+ +month+
52、 +day); public static void main(String args) Date1 a=new Date1(2019,9,20); a.year=2019; a.print(); 例如:使用对象3/ main()方法是类UseDate2中的方法, main()使用类另一个 类Date2的对象class Date2 int year,month,day; void setDate(int y,int m,int d) year=y; month=m; day=d; void print() System.out.println(year+ +month+ +day); publ
53、ic class UseDate2 public static void main(String args) Date2 b=new Date2(); b.setDate(2019,9,1); b.print(); 对象的使用对象作为类的成员v类的成员变量可以是对象v留意:在使用前必须为该对象分配空间class Date int year,month,day; Date(int y,int m,int d) year=y;month=m;day=d; void showDate() System.out.println(year+”,”+month+”,”+day);public class
54、Student String no,name; Date birth; void setStu(String s1,String s2,int y,int m,int d) no=s1; name=s2; birth=new Dare(y,m,d);/为成员变量对象分配空间对象的使用方法中使用对象v对象作为方法的参数和返回值v留意:是引用传递。/passObject.java类对象作为方法参数,并且在方法中改变对象class Aint x=5;void change(A a)System.out.println(a.x=+a.x);a.x=331;System.out.println(a.x=
55、+a.x);class passObjectpublic static void main(String args) A aa=new A();aa.change(aa);System.out.println(aa.x= +aa.x);对象的使用对象数组v数组中的每个元素是对象。v public class ObjectArrayv public static void main()v Date d=new Date(2);v d0=new Date(2019,12,31);v d1=new Date(2000,1,1);v d0.showDate();v v对象的清除v 定义对象时,必须用n
56、ew分配空间,但使用后的释放是系统自动完成的。v Java运行时系统通过垃圾收集(Garbage Collection)周期性地监测释放无用对象所使用的内存,完成对象的清除。v v 除了自动垃圾收集外,通过调用方法System.gc()要求进行垃圾收集时。v 当一个对象的内存空间被回收时,系统自动调用该对象的方法finalize(),进行删除工作。包v包包v是类和接口的集合,提供一种高层访问保护和名是类和接口的集合,提供一种高层访问保护和名空间管理空间管理v包得作用:避免同名冲突包得作用:避免同名冲突v包名本身又对应一个目录用一个目录表示)。包名本身又对应一个目录用一个目录表示)。v包名可以有
57、层次,以小数点分割。包名一般全小包名可以有层次,以小数点分割。包名一般全小写写Company Logo包( package)v package vpackage pk1. pk2.pk3.;v如如package first.second.third ,则系统对应在磁,则系统对应在磁盘上建立目录:根路径盘上建立目录:根路径firstsecondthirdv包名建议包名建议 package cn.js.ccit.www; /命名命名要注意唯一性要注意唯一性,可使用可使用WWW域名的倒写域名的倒写v public class ComplexNumber v如果如果package未指定,则所有的未指定
58、,则所有的 class都被组合到一都被组合到一个未命名的缺省个未命名的缺省default package包中,不能被其他包中,不能被其他包中的类引用包中的类引用vpackage说明必须是非注释非空行的第一行说明必须是非注释非空行的第一行package语句后对应的是包的层次结构,包名之间是通过点号来分隔的包( package)v使用包使用包v使用使用import语句语句v import pk1.pk2.pk3(类名或(类名或*)v留意:留意:import语句要放在程序的最前面。语句要放在程序的最前面。v使用前缀包名使用前缀包名v在每个要引入的类前,给出该类所在的包名。在每个要引入的类前,给出该类
59、所在的包名。import java.applet.Applet; /引入包java.applet中的类Appleimport java.io.*; /引入包java.applet中的类Apple java.applet.Applet a=new java.applet.Applet()import java.applet.Applet;Applet a=new Applet();使用其他包中的类v import语句v 将指定包中的类引入当前的程序中,即告诉编译到哪去找程序中使用的类。v import语句v 必须出现在所有类定义之前。v 例:import java.util.* ; 该语句引入整
60、个utility 类库(标准Java库的一部分) 例:import java.util.Vector ; 该语句只引入Vector类,但utility类库中的其他类不可用。主要包介绍再谈staticvstaticv类(静态)成员变量v类(静态)方法v例子v不正确的使用Company Logo类方法和类变量 staticv类方法静态方法或类变量静态变量)vstatic 用在变量或方法之前,表明它们是属于类的v实例的方法和变量v若无static修饰,则变量和方法分别是某个实例对象的class ABCD char data; static int share_data;class Demo ABCD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论