第3章 类的定义和使用
JAVA第三章习题答案 (2)
10.学生类的创建和使用。 (1)创建一个 Student 类,包括的私有数据成员有学号、姓名、性别、年龄等。 (2)声明一个构造方法,以初始化对象的所有数据成员。 (3)声明分别获得各数据成员(学号、姓名、性别、年龄等)的各个 public 方法。 (4)声明分别修改各数据成员(学号、姓名、性别、年龄等)的各个 public 方法。 (5 ) 声明一个 public 型的 toString( )方法, 把该类中的所有数据成员信息组合成一个字符串。 (6 ) 在类中声明统计班级总人数的私有数据成员 count, 以及获得班级总人数的 public 方法。 (7)将 Student 类放在子包 student 中。 (8 ) 在子包 student 外, 创建测试类 StudentTest。 在测试类中, 使用 Student 类创建多个对象, 测试 Student 类的每个 public 方法。 //Student.java package student; public class Student { private String sno; private String sname; private char ssex; private int sage; private static int count=0; public Student(String no,String name,char sex,int age){ sno=no; sname=name; ssex=sex; sage=age; count++; } public void setSno(String no){ sno=no; } public String getSno(){ return sno; } public void setSname(String name){ sname=name; } public String getSname(){ return sname; } public void setSsex(char sex){ ssex=sex; } public char getSsex(){ return ssex;
C++ 第3章类和构造函数
1、类定义的一般形式如下: class Name { public:
类的公有函数
private: 私有的成员函数
私有的数据成员定义
}; <各个成员函数的实现> 注意:类的定义也是一个语句,所以要有分号结尾,否则,会产生难以理解的编 译错误。 2、类中的成员: 1. 数据成员,类的数据。 2. 成员函数,类的操作。
25
成员初始化表
class Image { public: Image(const int w, const int h); private: const int width; const int height; //... }; Image::Image (const int w, const int h) : width(w), height(h) { }
21
再讲访问权限
类成员有三种不同的访问权限: 1. 公有(public)成员可以被程序中任何代码访问。 2. 私有(private)成员只能被该类的成员函数及友元类的成员函数访问, 其它类及其子类的成员函数都不能访问。 3. 保护(protected)成员只能被该类的成员函数和说明为友元类的成员 函数访问,或子类的成员函数访问。 注意: 1.如果未指定类成员的访问权限,默认访问权限是私有的 2.数据成员和成员函数出现的顺序也没有关联
第3章_DTD文档类型定义
2 定义元素及其后代(4)
复合型元素的声明,即定义元素及其子元素: DTD尽管要求严格,但也有它的灵活性。使用正则表达式,我们就 可以描述父元素与子元素之间非常复杂的关系。下面就是描述子 元素的正则式:
元 字 符 + * ? 含 义 出现一次或多次 出现零次或多次 不出现或出现一次
()
| ,
一组要共同匹配的表达式
2 定义元素及其后代(6)
重复元素 DTD定义(+:至少出现一次) <!ELEMENT 联系人 (姓名,EMAIL+)> <!ELEMENT 姓名 (#PCDATA)> <!ELEMENT EMAIL (#PCDATA)> 下面的XML片断是有效的: <联系人> <姓名>张三</姓名> <EMAIL>zhang@</EMAIL> <EMAIL>zhang@</EMAIL> <EMAIL>zhang@</EMAIL> </联系人> 而下面这个XML片断不是有效的: <联系人> <姓名>张三</姓名> </联系人>
2 定义元素及其后代(1)
元素的声明: 元素声明不但说明了每个XML文件中可能存在的元素,给出了元 素的名字,而且给出了元素的具体类型。一个XML元素可以为空, 也可以是一段纯文本,还可以有若干个子元素,而这些子元素同时 又可以有它们的子元素。DTD正是通过元素之间的父子关系,描 述了整个文件的结构关系。 元素的声明形式为: <!ELEMENT 元素名 元素内容描述> 元素内容可分为如下的3个类型: 简单型:元素内容是可解析的字符数据(Parsed Character Data, PCDATA),即不含有子元素的文本。 复合型:元素的内容含有其它元素,既有子元素。 混合型:元素的内容既有文本数据又有子元素。
《Java面向对象程序设计》课件-第3章 类和对象
3.4.2 访问权限
35
练习3.4
1.[单选题]被声明为private、protected及public的类成员,对于在类的外部,以下说法中 ________是正确的?
A.都不能访问
B.都可以访问
C.只能访问声明为public的成员 员
D.只能访问声明为protected和public的成
2.[单选题]在Java语言中,被______修饰符修饰的成员变量只可以被该类本身访问。
20
实例变量VS类变量
实例变量必须用对象名访问 类变量可以用类名访问,也可以用对象名访问
21
3.3.2 实例方法和类方法
成员方法的定义:
[访问权限] 返回值类型 方法名([参数列表]){ 方法体
} public String getPassword() {
//实例方法,获取密码
return password;
11
对象的创建
声明对象变量
✓ 类名 对象名(对象的引用)
Car c1; c1=new Car("京A08L35");
创建对象 类名 对象名=new 构造方法(); Car c1=new Car("京A08L35");
new
12
main()方法
main()方法: public static void main(String args[])
类型。
private String carNum;
每个类都有一个默pu认b的li构c C造a方r法()({它没有任何参数),如果类 没有重新定义构造方ca法rN,u则m创=建"京对象A时08系L统3自4"动; 调用默认的 } 构造方法。否则,p创ub建li对c 象Ca时r调(S用tr自in定g义n的u构m造){方法。
3面向对象程序设计概述
对象
什么是对象(object)? 现实世界中的任何一 个事物都可以看成是一个对象。
自然的实体: 一个人, 一辆汽车, 一个教师 抽象的逻辑结构: 一个银行帐号, 一个学生的学籍档案 一条客户通信录
对象的广义定义和特性
对象是人们要研究的任何事物 ,其特性是: 1、每一个对象必须有一个名字以区别于其它对 象; 2、用属性(或叫状态)来描述它的某些特征; 3、有一组操作,每一个操作决定对象的一种行 为。
类的确定和划分
另外,还要知道什么事物不能被划分为类。不 能把一组函数组合在一起构成类,也就是说, 不能把面向过程的若干个函数简单组合变成类, 类不是函数的集合。
对象与类的关系
类是对一组性质相同的对象的描述。 对象则是类的具体化,是类的实例。 例如:“学生”是一个类,是对所有学生个体 的共同特征的描述,张三、李四等学生个体则 是学生类的实例。
面向对象程序设计
用程序中的对象直接模拟现实世界中的对象, 将问题空间直接映射到软件空间。从而设计出 尽可能直接、自然地表示问题求解方法的软件。 它把求解问题中客观存在的事物看作各自不同 的对象,再把具有相同特性的一些对象归属为 一个类。 面向对象的这种设计方式符合人类的自然思维 习惯,使我们能够在程序中自然地描述现实世 界的实体和问题,增强了程序代码的可读性, 有利于控制软件的复杂性。
面向服务的程序设计
软件由一组可互操作的服务组合而成。这些服 务既可以灵活组合在一起,也可以单独运行。 服务之间通过定义良好的接口和契约联系起来。 接口是采用中立的方式进行定义的,它应该独 立于实现服务的操作系统和编程语言。 服务的使用者通常使用一种代理机制来找到服 务提供者,因此它们之间是松耦合的。 面向服务的程序设计主要是考虑如何把服务拆 分开发,如何把服务组合运行。
java程序设计教程第六版 第3章
1-13
String 类的常用方法
• 当String类的对象创建后,此对象的长度和值都不能修 改 • String类的对象是不可改变的 • 但是String类的一些方法可以,在原来String类对象的 基础上,返回新的String类对象 • 第79页,列出了String类的常用方法
1-14
字符串索引
1-17
包
• Java类库中的类采用包的方式组织管理。
例如:java.awt包中是完成绘图、图形用户界面创建的类
• 下面是java标准类库中的一些包:
包
目的
General support Creating applets for the web Graphics and graphical user interfaces Additional graphics capabilities Network communication Utilities XML document processing
ng java.applet java.awt javax.swing java.util javax.xml.parsers
1-18
import 语句
标准类库中,除ng包中的类系统自动引入外, 其他包的类使用时:
• 我们可以使用类的全名
java.util.Scanner scan = new java.util.Scanner (System.in);
title = new String ("Java Software Solutions");
调用 String类的构造函数, 构造函数是一个特殊的方法,用于建立对象
• 对象的创建也称作初始化。
• 一个对象是某个类的一个实例
Java语言程序设计课后习题解答-张思民-第三章
第3章面向对象程序设计基础【1】什么是Java程序使用的类?什么是类库?[解答]:Java程序的基本单位是类。
对象是对事物的抽象,而类是对对象的抽象和归纳,找出事物的共性,把具有共同性质的事物归结为一类,得出一个抽象的概念——类。
类是具有相同属性和方法的一组对象的集合,类是在对象之上的抽象,对象则是类的具体化,一旦建立类之后,就可用它来建立许多你需要的对象。
Java的类库是系统提供的已实现的标准类的集合,是Java编程的API(Application Program Interface),它可以帮助开发者方便、快捷地开发Java程序。
【2】如何定义方法?在面向对象程序设计中方法有什么作用?[解答]:方法的定义由两部分组成:方法声明和方法体。
方法声明的基本格式如下:返回类型方法名(形式参数){… //方法体内容}方法声明包括方法名、返回类型和形式参数,方法的小括号是方法的标志;方法体为实现方法行为的Java语句。
在面向对象程序设计中,方法所起的作用是完成对类和对象属性操作。
【3】简述构造方法的功能和特点。
下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。
void Student(int no,String name){studentNo=no;studentName=name;return no;}[解答]:构造方法是一个特殊的方法,主要用于初始化新创建的对象。
构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。
以上的代码段出错于:①构造方法Student()前不能加void ②不能用return语句【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。
编写Java程序创建student类的对象及测试其方法的功能。
第三章 类图
3.1 类图的概念
图3-1电子商务网站的对象模型
3.1 类图的概念
2、类图的作用 类图常用来描述业务或软件系统的组成、结构和关系。
3、类图的组成元素 类 接口 协作 关系 注释 约束 包
3.2 UML中的类
1、类的表示 (1)类的定义
类是具有相似结构、行为和关系的一组对象的描述 符。 (2)类的表示
关于聚合与组合
2、泛化-Generalization
表示两个类元间“一般”与“特殊”的关系。 对应面向对象编程语言中类与类之间的继承关系。 “is a kind of”关系,XX是一种XX
Athlete
SwimmerBiblioteka Golfer3、实现-Realization
表达一种说明元素与实现元素之间的关系; 类和接口之间的关系是实现关系,表示类实现接口提供的
3.2 UML中的类
(7)类的约束 约束指定了类所要满足的一个或多个规则。 在UML中,约
束是用花括号括起来的自由文本。
Washing Machine
Brand name Model name Serial number Capacity Add clothes( ) Add detergent( ) Remove clothes( )
表示客户与提供者之间用不同的方法表现同一个概念, 通常一个概念更抽象,一个概念更具体。包括:
① 跟踪<<trace>>--声明不同模型中的元素之间存在一些 连接但不如映射精确。
② 精化<<refine>>--声明具有两个不同语义层次上的元 素之间的映射。
③ 派生<<derive>>--声明一个实例可以从另一个实例导 出。
第3章数据结构基本类型3.3操作受限的线性表——队列-高中教学同步《信息技术-数据与数据结构》(教案
编程实践:请实现一个循环队列,包含入队(enqueue)、出队(dequeue)、判断队列是否为空(is_empty)等基本操作。你可以使用Python语言进行编程,并编写相应的测试用例来验证你的实现。
理论思考:
思考并解释为什么队列的“先进先出”特性在现实生活中有广泛的应用。
假设你是一家大型超市的经理,你需要设计一个顾客结账排队系统。请说明你会如何利用队列的原理来设计一个既高效又公平的排队系统。
队列的应用:
结合日常生活中的排队场景,解释队列原理的实际应用,如银行取号系统、医院挂号系统等。
强调队列在处理具有“先来先服务”特性问题时的有效性,以及如何通过队列来优化服务流程。
教学难点
循环队列的实现与理解:
理解循环队列如何通过循环使用数组空间来避免“假溢出”现象。
掌握如何根据队列的头部和尾部指针判断队列的空和满状态。
完成后与同学交流并分享自己的解题思路和经验。
通过编程练习巩固所学知识,提高学生的编程能力和解决实际问题的能力。
鼓励学生互相交流和讨论,培养学生的团队协作能力和沟通能力。
课堂小结
作业布置
课堂小结
本节课我们深入学习了数据结构中的队列(Queue)这一重要概念。首先,通过日常生活中排队的例子,我们直观地理解了队列的基本特点——先进先出(FIFO),即新加入的元素总是排在队尾,而需要处理的元素总是从队头开始。
准备课后作业:设计一些与队列相关的课后作业,如编写顺序队列和链式队列的实现代码、分析队列在实际问题中的应用等,以巩固学生的学习效果。
教学媒体
教材或讲义:
提供了队列的基本概念、特征、实现方式以及应用实例的文字描述。
包含了队列的抽象数据类型定义、队列的存储结构(顺序队列、循环队列、链队列)等核心知识点的详细解释。
第3章 类图
3.1类图的概念
• (3)模型化一个逻辑数据库模式 • 我们常用类图设计数据库的蓝图。在很多领域,我们想把 持久性数据保存到关系数据库或面向对象的数据库中。我 们可以用类图为这些数据库模式建立模型。 • 3.类图的组成元素 • 类图中的元素有类、接口、协作、关系、注释、约束、包。 关系把类、协作、接口连接在一起构成一个图。注释的作 用是对某些类和接口进行注释,约束的作用是对某些类和 接口进行约束。
3.2 UML中的类
• (2) 对于操作,也经常会提供可见性修饰,只是通常应该声明为public, 否则它难以向其他类提供服务。 • (3) 操作在表示时可以只写出操作名,也可以将操作拥有的参数也写 出来,即写成员方法的完整签名。 • 属性和操作名之前可附加的可见性修饰符: 加号(+)表示public;减 号(-)表示private;#号表示protected;省略这些修饰符表示具有 package(包)级别的可见性。 如果属性或操作名具有下划线,则说 明它是静态的。 • 4.职责 • 职责指类承担的责任和义务。在矩形框中最后一栏中写明类的职责。 如图3-3所示。
• 4.导航性
• 导航性描述了源对象通过链接访问目标对象。箭头表明了导航的方向 性,即,只有源对象才能访问目标对象,反之,目标对象不能访问源 对象。如图3-19所示。
图3-19导航性
3.4 阅读类图
• 下面我们以电子商务网站为例,说明如何阅读类图. • 3.4.1 电子商务网站业务 • 1.电子商务网站 • 假设住在厦门的张三要给住在绍兴的朋友李四送一个生日蛋糕,由于 它们之间的距离太远,不可能亲自买一个送过去。但解决这个问题并 不难,张三登录到一个电子商务网站购买一个,并通过该网站将其送 给李四。而这个电子商务网站实际上就是通过绍兴的蛋糕店来完成这 个任务的。因此,在整个传递过程中,各个实体之间的关联关系如图 3-21所示。
第3章补充案例
案例
一、案例描述
1、考核知识点
编号:2
名称:类和对象
2、练习目标
掌握类定义的方式
掌握如何在类中定义成员变量和成员方法
3、需求分析
在面向对象的思想中最核心就是对象,在程序中创建对象的前提是需要定义一个类。为了让初学者掌握类的定义方式,本案例将设计一个表示学生的类,该类具有表示姓名的属性name和表示年龄的属性age,同时还具有表示说话行为的方法speak(),用于输出学生的姓名和年龄。
}else{
age =a;
}
}
void speak() {
System.out.println("我的名字是" + name + ",今年" + age + "岁");
}
}
public class Example02{
public static void main(String[] args) {
Student s1 = new Student();
4、设计思路(实现原理)
1)编写测试类Example02,将属性age的值设为-30,演示不合理现象。
2)对Student类进行修改,将name和age属性使用private修饰,然后定义getName()、setName(String n)、getAge()和setAge(int a)四个对外访问name和age的方法。
图3-5运行结果
从运行结果可以看出,由于实现了Division类的封装,在setDivisor(int mDivision)方法中对传入的值进行检查,从而避免程序中出现除数为0的错误。
案例
一、案例描述
C# 第3章 常用数据类型的用法
21
3.1 字符串
下例中,把strA字符串“Hello”复制到newStr中。 //Copy newStr=""; newStr=String.Copy(strA); Console.WriteLine(newStr);//" CopyTo方法自己参考MSDN。
3.1 字符串
7. 字符串的合并与拆分
3.1 字符串
IndexOfAny方法: 功能同IndexOf类似,区别在于,可以搜索在一个字符串中 ,出现在一个字符数组中的任意字符第一次出现的位置。同样 ,该方法区分大小写,并从字符串的首字符开始以0计数。如 果字符串中不包括这个字符或子串,则返回-1。I 查找某个字符串中是否包含某些字符(多个不同的字符)。 常用语法:public int IndexOfAny( char[ ] anyOf )
17
3.1 字符串
6. 移除首尾指删除指定的字符 :利用TrimStart删除字
符串首部字符,利用TrimEnd删除字符串尾部字符,利用Trim 删除字符串首部和尾部一个或多个字符。 其形式如下: public string Trim() public string Trim(paramschar[] trimChars) 其中,参数trimChars数组包含了指定要去掉的字符,如果缺省 ,则删除空格。
7
8
3.1 字符串
比较运算符
String支持两个比较运算符“==”、“!=”,分别用于判 定两个字符是否相等和不等,并区分大小写。相对于上面介绍 的方法,这两个运算符使用起来更加直观和方便。 下例中,使用“==”、“!=”对“Hello”和“World” 进行比较。 //==和!= Console.WriteLine(strA==strB);//false
c++教案第三章:类与对象
在程序的执行过程中,当遇到某一对象的生存期结束时,系统自动调用析构函数,然后再收回为对象分配的存储空间。
对象在定义时自动调用构造函数,生存期即将结束时调用析构函数!
类中的成员数据是另一个类的对象。可以在已有抽象的基础上实现更复杂的抽象。
原则:不仅要负责对本类中的基本类型成员数据赋初值,也要对对象成员初始化。
类名(形参表);//构造函数的原型
//类的其它成员
};
类名::类名(形参表){//构造函数的实现
//函数体
}
类的构造函数承担对象的初始化工作,它旨在使对象初值有意义。
对构造函数,说明以下几点:
1.构造函数的函数名必须与类名相同。构造函数的主要作用是完成初始化对象的数据成员以及其它的初始化工作。
2.在定义构造函数时,不能指定函数返回值的类型,也不能指定为void类型。
由于构造函数属于类的成员函数,它对私有数据成员、保护的数据成员和公有的数据成员均能进行初始化。
当定义类对象时,构造函数会自动执行。
调用默认构造函数的语法:类名类对象名;
在程序中定义一个对象而没有指明初始化时,编译器便按默认构造函数来初始化该对象。
默认构造函数并不对所产生对象的数据成员赋初值;即新产生对象的数据成员的值是不确定的。
析构函数是在对象生存期即将结束的时刻由系统自动调用的。显式定义析构函数格式为:
类名::~析构函数名( ) {
语句;
}
若在类的定义中没有显式地定义析构函数时,系统将自动生成和调用一个默认析构函数,其格式为:
类名::~默认析构函数名( ) {
}
任何对象都必须有构造函数和析构函数,但在撤消对象时,要释放对象的数据成员用new运算符分配的动态空间时,必须显式地定义析构函数。
第3章%20类与对象
2.重载性 构造函数可以重载; 析构函数不能重载; 一般成员函数可以重载;
17
例3-2:
#include <iostream.h> class tdate { public: tdate( ); tdate(int d); tdate(int m, int d); private: int month; int day; int year; }; tdate::tdate( ) {month=4;day=5;year=1995;} tdate::tdate(int d) {month=4;day=d;year=1995;} tdate::tdate(int m,int d) {month=m;day=d;year=1995;} void main( ) { tdate aday, bday(10), cday(2,12); }
32
例3-8 #include<iostream.h> #include<string.h> 分析该程序中 class MyClass { 存在的问题 int no; char *pname; s public: MyClass(int n,char *p) { no=n; pname=new char[10]; 10 no strcpy(pname,p); } pname void display() {cout<<"no:"<<no<<",name:"<<pname<<endl;} }; void main() { mary MyClass s(10,"mary"); s.display(); }
无函数返回类型 其参数用来传递定义对 象时的初始值
第3章 文档类型定义DTD
“URL_DTD”为外部私有DTD文件的路径,可以是绝对路径,
也可以是相对路径。 “>”表示引用外部私有DTD文件指令的结束。
LOGO
引用外部公共DTD文件
<!DOCTYPE 根元素 PUBLIC “公共DTD名称” “DTD_URL”>
“<!DOCTYPE”中的“<!”表示一条指令的开始,“DOCTYPE” 表示该指令为文档类型定义指令,是关键字,必须大写。而且 在“<!”和“DOCTYPE”之间不允许加空格。 “根元素”为DTD根元素的名字,该名称必须为XML文档中 根元素的名称。 “PUBLIC”为引用外部公共DTD文件的关键字。同样的这个关 键字也必须全为大写。 “公共DTD名称”是DTD的名称,它是一个正式共用标识符。 “URL_DTD”为外部公共DTD文件的路径,一般为URL值。
属性值可有可无的属性
固定取值的属性 默认值
LOGO
CDATA类型 枚举类型 NMTOKEN类型 NMTOKENS类型 ID类型 IDREF类型 IDREFS类型 ENTITY类型 ENTITYS类型 NOTATION类型
属性类型
LOGO
实体的分类
灵活性,但有时需要的是统一,要求某一类文档具有相同
的结构。 可以保证数据交流和共享的顺利进行。 使用户能够不依赖具体的数据就能知道文档的逻辑结构。 可以验证数据的有效性。
LOGO
DTD的基本结构
“<!DOCTYPE”为DTD定义的开始标记,“>”为DTD定义
的结束标记。
“职工列表”为XML文档的根元素,对XML文档的规定要 放到根元素后面的一对中括号中。 “<!ELEMENT”为元素定义的开始标记,“>”为元素定义 的结束标记。
Java程序设计(2021春)——第三章类的重用课后题(选择题+编程题)答案与详解
Java程序设计(2021春)——第三章类的重⽤课后题(选择题+编程题)答案与详解Java程序设计(2021春)——第三章类的重⽤课后题(选择题+编程题)答案与详解⽬录第三章选择题Tip:选择题部分我只针对部分我出错的或我认为有价值的题⽬在此整理。
3.0 导学⽆3.1.1-3.1.2 类继承的概念和语法⽆3.1.3 隐藏和覆盖⽆3.2 Object类⽆3.3 终结类与终结⽅法T2题⾯如果需要抛出异常,可能会使⽤下⾯哪些关键字A finalB finallyC finalizeD catch答案B D详解选项中和异常相关的只有finally和catch。
(其实这应该是没讲过,笔者⽬前还没接触过相关内容,先mark⼀下)T3题⾯下⾯程序的运⾏结果是(忽略换⾏)class C{final public int methos(){System.out.println("a");return 0;}}public class A extends C{final public int method (int x){System.out.println(x);return 0;}public static void main(String[] args){c.method();}}A 2 2B 2 aC 运⾏错误,因为C的final⽅法不能被重写D 运⾏错误,因为A重写method时参数表不⼀样答案B详解由于参数表不⼀样,因此并⾮重写⽅法,⽽是定义新⽅法。
运⾏结果应该为2 a。
T4题⾯不能⽤来修饰interface的有A privateB publicC finalD static答案A C D详解可以修饰interface的只有public。
可以修饰class的有public final abstract。
T6题⾯final类和⽅法的存在处于以下哪些⽅⾯的考虑A 安全⽅⾯B 设计⽅⾯C 代码结构简单D 能够提⾼运⾏效率答案A B D详解详见郑莉⽼师《Java语⾔程序设计(第2版)》118-119页。
JAVA基础 第3章类与对象_练习题
第3章类与对象一.选择题1.下列不属于面向对象编程的特性是(D)。
A.封装性 B. 继承性 C. 多态性 D. 编译执行2.下列类的声明中不合法的是(C)。
A. class People{…}B. class 植物{…}C. Class A{…}D. public class 共有类{…3.下列方法的声明中不合法的是(C)。
A. float area(){…}B. void area(){…}C. double area(d){…}D. int area(int r){…}4. 下列构造方法(构造器)的调用中正确的是(C)。
A. 按照一般的方法调用B. 由用户直接调用C. 只能通过new自动调用D. 被系统调用5.下列程序运行的结果是(A)。
class Book{int width;int length;}public class A{static void f(Book p){p.width=20;p.length=40;}public static void main(String args[]){Book b=new Book();b.width=10;b.length=20;f(b);System.out.print(" "+b.width);System.out.print(" "+b.length);}}A. 20 40B. 10 40C. 10 20D. 以上都不对6.下列程序运行的结果是(D)。
public class A{static void f(int y){y=y+10;}public static void main(String args[]){double x=10;f(x);System.out.println(x);}}精选文库A. 10B. 20C. 10.0D. 程序编译错误7.下列程序运行的结果是(C)。
public class A{int z=20;static void f(int y){y=z;System.out.println(y);}public static void main(String args[]){f(10);}}A. 10B. 20C. 程序编译错误D. 以上都不对8. 以下代码的输出结果为(C)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、类的定义
定义类又称为声明类,一般语法格式如下: [修饰符] class 类名 [extends 父类] [implements 接口名] { 类成员变量声明; 类方法声明; }
类的声明包括类头和类体两部分。 1、声明类头 • 类头部分用关键字class 标志着一个类定义的开始,class 后面跟着新定义类的类名,类名由编程者命名,命名原则要 遵守从java 对标识符的有关规定,并体现该类主要功能或作 用。通常类名的第一个字母要大写。 • extends后跟上父类名,用于说明当前存在的类是哪个类 子类。这个已经存在的父类可以是java类库中定义的类,也 可以是同一个程序或其他程序中定义好的类。 • implements 后跟上接口名,用来说明当前类中实现了哪个 接口定义的功能和方法。接口是java语言用来实现多重继承 的一种特殊机制。 • 类的修饰符用于说明类的特征和访问权限,包括 public,abstract,final等。
3、清除对象
• 对于无用的对象,java自动将无用的对象 清除,释放对象占用的内存。 以下两类对象都是无用对象。 • 被赋空值的对象是无用对象。 • 当程序执行到{ }之外时,在{ }之内创建的 对象变成无用对象。
三、类和类成员的修饰符
类和类成员的修饰符分为访问修饰符和特征修饰符 两类。在定义类和类成员时可以同时使用访问修饰符 和特征修饰符。在定义类、属性和方法时,所有修饰 符被放在语句的最前面,与类定义、属性类型和方法 返回值之间有一个空格分割。如果有一个以上的修饰 符同时修饰这个类、属性或方法,则将这些修饰符并 列并用空格互相隔开: 修饰符1 修饰符2 … 修饰符N class 类名{ … } 修饰符1 修饰符2 … 修饰符N 数据类型 属性名; 修饰符1 修饰符2 … 修饰符N 方法返回值类型 方法名 (形式参数列表) { … }
2、声明类体
• 类头定义了类的性质,类体则定义了类的具体 内容,包括类的属性与方法。 • 属性可以是基本数据类型的变量,也可以是类 对象。 声明基本数据类型的变量的语法如下: [访问权限符] [static][final]变量类型 变量名 [= 变量初值]; • 变量类型是简单数据类型,如 int,double,char 等。 成员常用的访问权限符有三 种:public,protected,private
1、创建对象 创建对象包括说明对象所属的类、为对象命名、分配内存空间和初始 化等环节。创建对象有两种方法:创建对象语句,声明对象语句和对象实 例化语句 (1)创建对象语句 格式: 类名 对象名 = new 类名[(参数列表)]; 例如: Rect x=new Rect(); Rect y=new Rect(); Circle c1=new Circle(); String s1=new String(“abc ”); 注:1、语句中的类名必须是已经存在的类,可以是系统定义的类,也可 以是用户定义的类。 2、new运算符的作用是根据对象的类型为函数分配内存空间,用于 存储该对象的所有信息,即存储该对象的数据成员和成员函数。 3、为对象分配内存空间后,自动调用类中的构造方法,以便为对象 初始化。 4、可以使用创建对象语句为类创建多个对象,每个对象占用不同的 内存空间。
例:class ExampleClass { public double d; private int I,j; method() { float f,g; } }
• 成员方法用于实现类的功能和操作。 • java 中声明方法的语法如下: [修饰符] [abstract][static][final]返回值类型 方 法名 ([参数列表]) throws 例外名1,例外名 2,… { 方法体: 局部变量声明; 语句序列; }
public class Java1 { public static void main(String args[]) { System.out.print(args[0]); } }
二、对象与类的使用
• 创建类是为了使用类。一般来说,通过类 对象使用类。首先要为类创建对象,然后 才能使用类。类只是抽象的数据类型,类 对象才是具体可以操作的实体。
例如: 1、用Circle类分别计算圆的面积和周长。 public class UseCircle { public static void main(String args[]) { Circle c1=new Circle(); Circle c2=new Circle(); System.out.println("半径2.4的圆面积是"+c1.area(2.4)); System.out.println("半径2.4的圆周长是"+c1.circumference(2.4)); System.out.println("半径4.5的圆面积是"+c2.area(4.5)); System.out.println("半径4.5的圆周长是"+c2.circumference(4.5)); } } class Circle {double circumference (double radius) { return 2*radius*Math.PI;} double area(double radius) {return Math.PI* radius * radius; } }
例如1:定义一个名为Circle的圆类,用于计算 圆的周长和面积。 class Circle {double circumference (double radius) { return 2*radius*Math.PI;} double area(double radius) {return Math.PI* radius * radius; } }
2、使用对象
创建对象是为了使用对象,通过对象可以使 用类提供的功能。一旦创建了对象,对象就 拥有了自己的内存空间,用于保存对象的数 据和方法。使用对象就是利用这块内存空间 中的方法操纵对象的数据,完成所需的操作。 • 使用对象也称引用对象或调用对象,包括使 用对象的方法和使用对象的变量。
格式为: 对象名.方法名([实际参数列表]) 对象名.变量名; 注: 点运算符起连接作用,表明需要使用对象中的 哪个方法或变量。 使用有形式参数的方法,需要用实际参数替换方 法中形式参数。实参的个数、类型及顺序必须与形 参一致。使用无参方法不需要实参,但()不能省略。 当方法中有return语句时,表示调用方法后会得 到一个返回值,可将返回值保存在变量中,变量的 数据类型要和返回值的类型一致。当方法是void类 型时,则没有返回值。
注:在一个文件中只能定义一个public类型的类。 • 被说明为public的内容可以被所有其他类使用。 如果public类文件与使用它的类文件存放在同一 目录中,可以直接使用。如果不在同一目录中, 需要通过import语句引入。 • 将类说明为public类型不等于其中的成员也是 public类型,前者只是后者的必要条件。类成员 能否被其他类使用,还要看类自身的访问修饰符。 • public修饰符可以和特征修饰符一起使用,共同 修饰类或类成员。 • 一个Java程序可以定义多个类,但只能有一个 public类,程序的主类必须是public类,每个程序 都从主类开始执行。
பைடு நூலகம்
访问修饰符
(1)省略访问修饰符 如果省略了访问修饰符,说明它有默认的 访问特性,具有包(目录)访问特性,即 该类只能被同一个包中的类访问和引用, 而不可以被其他包中的类使用,这种访问 特性又称为包访问性。
访问修饰符
(2)public公共访问修饰符 public修饰符用于说明类和类成员的访问 权限。用public修饰的类称为公有类或公用 类。用public修饰的类成员称为公有成员或 公用成员。
java类的定义和使用
在面向对象的程序的设计中,我们已经了解了类的 概念,类是现实世界中实体的抽象集合,是封装了数 据和其上操作的复杂的抽象数据类型,类具有完整的 功能和相对的独立性,可以包含更丰富的内涵、更好 的安全性和更强大的功能。具体的说,定义类的过程 就是定义类的属性和服务的过程:类的属性就是类的 静态属性的简称,指类内包含的各项数据,如变量或 其他类的对象;类的服务被称为成员函数或方法。 java的类分为系统定义类和用户定义类两部分。系统 定义类是已经定义好的类,可以直接使用。
2、用Rect类计算矩形面积。 class Rect { double a,b; void init(int len,int width) { a=len;b=width;} double area() { return a*b;} } public class UseRect { public static void main(String args[]) { Rect x=new Rect(); x.init(2,3); System.out.println("长2、宽3的矩形的面积是 "+x.area()); } }
注:(1)在形式参数列表中列出成员函数需 要的各个参数,如果不需要参数,可省略行 参列表。一个成员函数用于完成一种操作或 功能,一个类可以包括多个成员函数,以便 完成多种操作或功能。 (2)如果成员有返回值,则用return 语句返 回数据,并通过返回值的类型说明返回值的 数据类型。如果成员函数没有返回值,则返 回值类型为void。
(2)声明对象语句和对象实例化语句 声明对象语句格式: 类名 对象名; 实例化对象语句格式: 对象名=new 类名([参数列表]); 例如:执行下面两条语句创建Rect类的对象a; Rect a; a=new Rect();
注:声明对象语句用于说明对象所属的类名 和为对象命名,并没有为对象分配内存空 间。仅被声明的对象还不能被使用。 实例化对象语句的功能是为已声明的对 象分配内存空间和初始化。只有把对象实 例化后,才能完成对象的创建。