第四章 类、对象和接口

合集下载

第四章 面向对象编程(三)

第四章 面向对象编程(三)

43
定义类CCircle实现接口


Class CCircle implements CircleCal{ double clength(double r){ return 2*PI*r; } double carea(double r){ return PI*r*r; }
44
5.没有实现父类中所有抽象方法的类,也是抽象类。
8
抽象类实例
public abstract class Car{
private double price;
pribate String brand;
private int speed;
public class CarDemo{
}
public static void main(String[] args){ 抽象类不 Car c=new Car(); }}//编译能否通过?? 能被实例 化
抽象类练习:

定义一个描述宠物的抽象类Pet,包含重 量(weight)和年龄(age)两个成员变 量和显示宠物资料的showInfo和获取宠 物资料的getInfo两个抽象方法。
19
生活中的接口

电脑主板上的PCI插槽的规范就类似于Java 接口
声卡
网卡
主板
显卡
每种卡的内部结构都不相同,可以把声卡、 网卡、显卡都插在PCI插槽上,而不用担心哪 个插槽是专门插哪个卡的
41
练习:


创建一个接口 CircleCal,其中有: 一个数据成员 pi=3.1415 一个方法 clength,求圆周长 一个方法 carea,求园面积 一个方法 cvolum,求球的体积 并创建一个类CCircle ,实现该接口

第四章Java面向对象特性课件

第四章Java面向对象特性课件
第4章 Java面向对象特性
对象的基本概念
面向对象程序语言三个关键特点: 封装 ( Encapsulation ) 多态 ( Polymorphism ) 继承 ( Inheritance )
1
第4章 Java面向对象特性
抽象数据类型
基本数据类型和聚集类型的变量与一些操作 (如+, -)之间不需特殊的联系。 在面向对象语言中,在数据类型的声明与操作
数据隐藏与封装举例
class Date{
private int day, month, year;
void setDate( int a, int b, int c){
day = a;
month = b;
year = c ;
}
}

Date d1;
d1=new Date( ); d1.setDate(30,9,2001);
4
第4章 Java面向对象特性
对象生命周期
创建对象 使用对象 清除不用的对象
5
第4章 Java面向对象特性
创建对象
创建对象的三个步骤: 声明 (Declaration ) 实例化(Instantiation) 初始化(Initialization)
例: Point origin_one ; origin_one = new Point(23, 94); Rectangle rect_one = new Rectangle(origin_one, 100, 200); Rectangle rect_two = new Rectangle(50, 100);
public void changeObjValue( PassTest ref){
ref.ptValue = 99.0f; }

java程序设计 第四章 内容提纲汇总

java程序设计 第四章 内容提纲汇总

注意:①创建对象的意思是在内存中按类的格式开辟
一个空间。这个空间既有属性空间,又有方法空间。 ②同类的不同对象占用不同的内存空间 创建变量与创建对象示意图
第4章 面向对象编程
2、对象初始化的说明 (1)系统如何对变量初始化 一个变量若在声明后没有赋值而直接使用该变量, 则会出错
同样,用new创建一个对象时,系统会为对象中 的变量进行初始化。系统不但会为对象中的变量分配 内存,同时还为它们设置相应的初值 byte、short、int、long类型变量设初值为0 Float类型变量设初值为0.0f Double类型变量设初值为0.0 Char类型变量设初值为‘\u0000’ Boolean为false; 引用类型初值为null
第4章 面向对象编程
B、修饰方法—公共方法: 公共方法是类的对外接口,它允许其它类或程序 调用 C、修饰域—公共域(公共属性、公共变量):
用public修饰变量,会造成安全性和数据的封装
性下降
第4章 面向对象编程
2)、私有访问控制符:private 用private修饰的属性和方法只能被自身类访问 和修改。它不能被其它类(包括该类的子类)访问和修 改 说明: ①享有最高级别的保护,是类的私有成员 ②其它类若想获得和修改私有成员时,要通过 类的方法
◆封装是抽象的具体体现,它利用操作方法把数据 封装到类中;形成以数据为核心,以方法为外壳的类。
◆继承是一个类继承父类的所有非私有的属性和方 法,它可以提高代码的重用性。 ◆对象是类的实例化的结果,是类的具体化,利用 对象的引用可以使用类的属性和方法完成任务。
第4章 面向对象编程
§4.3 成员变量与封装
态,解决问题)
第4章 面向对象编程
面向对象的方法解决问题的基本过程 对象 实 例 ③ 化 类 实体

面向对象编程技术第四章-文档资料

面向对象编程技术第四章-文档资料

说明:
关键字public后面声明公有类型成员 它们是类与外部的接口,任何外部函数都可以访问公有类 型数据和函数 关键字private后面声明私有类型成员
允许本类中的函数访问,类外部的任何函数都不能访问。 紧跟在类名称的后面声明私有成员,关键字private可省略 (不提 倡)
1.
2.
说明:
3.
保护类型与private类似,其差别表现在继承与派生时对派 生类的影响不同,在第七章介绍。
下页 例子
构造函数,后面介绍 class circle { public: circle::circle(int r) { radius=r; } int area() { return (int)3.14*radius*radius;
} void circle_prt() { cout<<"the private radius is:"<<radius<<endl; } void main() private: { int radius; circle circle1(1),circle2(3); };
3. 利用类易于编写大型复杂程序,其模块化程度比 C中采用函数更高。
慢慢体会…
2. 类的定义:
类是一种用户自定义类型,声明形式: class 类名 { public: 公有成员(外部接口) private: 私有成员 protected: 保护型成员 }
时钟类的成员 (数据成员与函数成员声明) class Clock 数据成员 {private: int Hour, Minute, Second; public: void SetTime(int NewH, int NewM, int NewS); void ShowTime( ); };

第四章 面向对象(上)

第四章 面向对象(上)

4.3 类的域(属性)与方法(操作)

Java中类包括域和方法两部分

域:即属性也称数据成员,是事特物静态特征 的抽象,可以是基本数据类型的数据或数组, 也可以是某一个类的对象
方法:即操作也称成员方法,是事物动态特征 的抽象,用于处理该类的数据

类的基本定义格式如下:
[修饰符] class 类名 [extends 父类] [implements 接口名] { 成员变量基本数据类型或某个类的对象 成员方法函数 }

类与对象


对象是对客观事物的抽象 类是对对象的抽象,在语言中是一种抽象的数 据类型。 它们的关系是,对象是类的实例,类是对象的 模板。

对象引用


类类型变量称为引用变量,它们并不直接保留 对象,只是保留对象的地址,而不是拥有对象 本身,通过引用变量即可以得到一个对象。 所有对象总是且只能通过内存引用访问,这种 方式称为间接寻址。
第四章 类与对象(上)
主要内容
4.1 面向对象技术 4.2 抽象、 类、对象及引用 4.3 类的域与方法 4.4 对象 4.5 构造方法 4.6 类成员属性和方法的非访问修饰符 4.7 包(Package)
4.1 面向对象技术
4.1.1 面向过程与面向对象的比较 面向过程程序设计方法


过程化程序设计先确定算法,再确定数据结构 程序=算法+数据结构 缺点
类成员方法
[修饰符] 返回值类型 方法名(参数列表)
[throws 例外名1,例外名2,…] { 局部变量声明;
语句序列;
}
类成员方法

局部变量


局部变量在某一个语句(如for语句)或代码块 (如方法体)中声明,作用域是声明该变量的 语句或代码块 局部变量使用前必须初始化

第四章 Java面向对象编程基础共60页

第四章 Java面向对象编程基础共60页

{ Date now=new Date();
if(now.getYear()m_StartWorkDateE.mgeptlYoeyaere()e>1==3n&e&wdCaoyms<m=o2n1E)mployee ()
return true;
else return false; }}
Programming in Java
类的修饰符 abstract 抽象类:没有自己的对象 abstract class A{..} A a1=new A(); final 最终类:没有子类的类 final class B{..} class C extends B{..}
Programming in Java
抽象类
4-15
➢ 用 abstract修饰的类(称为抽象类)没 有自身的对象,此类的对象均为其子类 的对象.
4-12
class Department {
int m_DeptNo=10; String m_DeptName; int m_DeptTotalEmp=30; Department(int dno,String dname,int total) {
m_DeptNo=dno; m_DeptName=new String(dname); m_DeptTotalEmp=total; } }
➢抽象类就是没有具体对象的概念类
➢ 不能创建抽象类的对象
➢ 抽象类里可以预留一部分方法给子 类实现
➢ 抽象类可以提高开发和维护的效率
Programming in Java
抽象类使用示例
4-16
பைடு நூலகம்
Programming in Java
抽象类使用示例

TypeScript入门教程

TypeScript入门教程

TypeScript入门教程第一章:什么是TypeScriptTypeScript是由微软开发的一种开源编程语言,它是JavaScript 的一个超集,意味着所有JavaScript代码都可以在TypeScript中执行。

与JavaScript相比,TypeScript增加了静态类型和面向对象编程的特性。

它可以编译成纯JavaScript代码,可以在任何浏览器上运行。

第二章:TypeScript的安装和配置要开始使用TypeScript,需要先安装TypeScript编译器。

可以通过在命令行运行npm install -g typescript来安装最新版本的TypeScript。

安装完成后,可以使用tsc --version命令来验证安装是否成功。

接下来,需要创建一个tsconfig.json文件来配置TypeScript编译器。

在该文件中,可以指定要编译的文件、输出目标等信息。

第三章:基本类型和变量声明在TypeScript中,可以使用与JavaScript相同的基本类型,如number、string、boolean等。

此外,TypeScript还引入了一些其他的类型,例如枚举、元组和any类型。

可以使用let或var关键字来声明变量,并在声明时指定类型。

如果没有为变量指定类型,则可以根据初始值来推断变量类型。

第四章:函数和类TypeScript支持函数式编程和面向对象编程。

可以使用function 关键字来声明函数,并在函数名后面指定参数类型和返回类型。

可以使用类来创建对象,并且可以使用构造函数来初始化对象的属性。

可以使用extends关键字来继承一个类,并使用super关键字来调用父类的构造函数。

第五章:接口和泛型接口在TypeScript中扮演着重要的角色,它用于定义对象的结构和行为。

可以用interface关键字来声明接口,并在接口中定义属性和方法。

可以使用泛型来创建可重用的组件,可以在定义函数、类或接口时使用泛型来指定类型。

JAVA复习题及答案

JAVA复习题及答案

JAVA复习题及答案第一章JAV A概述1.JA VA中哪三种平台:J2ME(嵌入式平台),J2SE(标准平台),J2EE(企业级平台).2.JA VA从第几版称为JA V A2:JA V A 1.2版。

3.JA VA有否指针:无。

4.JA VA的API指的是什么:Application ProgrammingInterface,JA V A的类库。

5.JA V A平台无关性是如何实现的:通过编译生成与平台无关的代码──字节码,而不是通常的特定机器上的机器码,由平台上的Java虚拟机中的Java解释器解释执行。

6.JA VA有哪两种程序形式:Application和Applet程序。

7.Application程序运行时系统调用程序的哪个方法:main()方法。

Applet程序执行时系统自动调用程序的哪个方法:init()方法。

8.绘图程序中系统自动调用哪个方法:paint(Graphics g)方法。

9.JDK是什么:Java开发工具包(Java Development Kit )的缩写,包括JAVA类库、JAVA编译器、JAVA解释器、运行时环境、命令行工具。

10.有哪几种主要的可视化的集成源程序编辑环境:Eclipse,JCreator, JBuilder等。

11.安装JDK的可执行文件是:jdk-1_5_0-windows-i586.exe12.安装JDK帮助文档的是:jdk-1_5_0-doc.zip第二章JAV A语言基础13.保留字是什么意思,能否用于程序员定义自己的类、方法、变量等名字:JA V A中已定义的用于特定用途的标识符。

不能。

14.i++与++i有什么区别?15.写出各种转义字符?p17。

\t, \n, \r, \‖, \’, \\16.编程良好习惯中,对象名、包名、类名、变量名、常量名、接口名、方法名中的字符的大小写如何设置?Package –名词且小写;Class--名词且第一个字母大写;Interface—同Class;Methods-动词且第一个字母小写,分隔词第一个字母大写,不用‖-―;Variable—第一个字母小写,不用‖_‖,‖$‖(对于inner class有意义);Constants—大写并用‖_‖17.标识符的用途:用于给类、方法、变量、接口、程序块、对象等起名字。

Java面向对象第四章

Java面向对象第四章

第四章接口
1、接口表示一种能力和约定
2、接口只有静态常量和抽象方法
3、接口使用interface关键字修饰
4、接口有抽象类的更好的特性:
a)可以被多继承
b)设计和实现完全分离
c)更自然的使用多态
d)更容易搭建程序框架
e)更容易更换实现
5、必须知道接口特性
a)接口不可以被实例化,常作为父类类型使用,需要创建子类对象
b)实现类必须实现接口的所有方法,除非实现一个抽象类
c)实现类可以实现多个接口,解决了Java继单承的问题,使用implements实现
d)接口中的变量都是静态常量
e)接口中的方法都是抽象方法
6、什么是接口类型:
a)接口属于一种引用类型,使用interface关键字修饰
7、使用Java实现接口的步骤:
a)设计接口:说明接口有哪些能力和接口有哪些约定
b)实现所有方法:用一个类实现接口,并且实现所有方法
c)使用接口类型,类对象来实现多态
8、接口的默认形式:
a)常量默认:public static final
b)方法默认:public abstract
9、接口的两大作用:
a)接口表示一种约定:体现在接口名称和方法名称和注释上,在面向接口,
我们并不考虑实现的细节,只需要知道想完成哪些功能,每一个功能就
是一个抽象方法,所有实现接口的类,都拥有该接口的方法
b)接口表示一种能力
10、面向接口设计注意事项:
a)关心实现类有何能力,而不关心实现细节
b)面向接口的约定而不考虑接口的具体实现
11、多个类关系图的表示:实线箭头表示继承,空心箭头表示实现。

第四章 面向对象编程

第四章 面向对象编程

4.2 面向对象的基本概念
2. 类 类。类是某些对象的共同特征(属性和操作)的表示,对象是类的实例。 例如,飞行器类包含位置、速度、颜色等属性,以及起飞、降落、加速 等操作。 是否建立了一个丰富的类库是衡量一个面向对象程序设计语言成熟与否 的重要标志。
4.2 面向对象的基本概念
3. 继承
类之间的继承关系是现实世界中遗传关系的直接模拟,它表示类之间的内 在联系以及对属性和操作的共享,即子类可以沿用父类(被继承类)的某 些特征。当然,子类也可以具有自己独立的属性和操作。 例如,飞行器、汽车和轮船可归于交通工具类,飞行器类可以继承交通工 具类某些属性和操作。 除遗传关系外,现实世界中还普遍存在着部分—整体关系。例如,飞机 可由发动机、机身、机械控制系统、电子控制系统等构成。聚集关系和继 承性是面向对象程序设计语言的最主要的特点,是其他语言(如面向过程 语言)所没有的。
package xx.xxx.xxx; //Package 声明
class Stuinfo { public String name = null; }
4.3.2 JAVA 类的组成
[访问控制修饰符] [抽象修饰符] [最终修饰符] class 类名称 [extends 父类] [implements 接口1, 接口2] { // 成员变量的声明 [访问控制修饰符] [静态修饰符] [最终修饰符] 变量类型 变量名1 = [变量初值]; [访问控制修饰符] [静态修饰符] [最终修饰符] 变量类型 变量名2 = [变量初值]; // 构造函数的声明 [访问控制修饰符] 构造函数名1 (参数列表) { // 语句块} [访问控制修饰符] 构造函数名n (参数列表) {// 语句块} // 方法的声明 [访问控制修饰符] [静态修饰符] [最终修饰符] 返回值类型 方法名1 (参数列表) throws 列外1,例外2…… {// 语句块} [访问控制修饰符] [静态修饰符] [最终修饰符] 返回值类型 方法名n (参数列表) throws 列外1,例外2…… {// 语句块} }

面向对象分析与设计(第二版)习题答案

面向对象分析与设计(第二版)习题答案

面向对象分析与设计(第二版)习题答案第一章:面向对象基础知识1.1 什么是面向对象分析和设计?面向对象分析和设计(Object-Oriented Analysis and Design,OOAD)是软件工程中一种常用的方法论,通过将问题领域进行建模,通过对象、类、继承、封装等概念来描述现实世界中的实体、关系和行为。

面向对象分析和设计的目标是开发出可复用、可维护、可扩展、高质量的软件系统。

1.2 面向对象分析和设计的优势有哪些?面向对象分析和设计有以下优势: - 高度模块化:通过将系统划分为多个独立的对象,便于理解和设计系统的各个部分。

- 可复用性:面向对象设计强调对象的复用,通过定义通用的类和接口,可以提高代码的复用程度。

- 可维护性:面向对象的封装特性使得系统的各个部分具有独立性,便于维护和修改。

- 可扩展性:通过继承和多态等特性,可以方便地扩展和修改系统的功能。

- 高可靠性:面向对象的封装和隐藏特性可以减少系统中的错误和安全漏洞。

- 开发效率高:面向对象的分析和设计提供了一种更自然的思考和描述问题的方法,可以提高开发效率。

第二章:面向对象建模2.1 对象的特征有哪些?对象具有以下特征: - 状态(State):对象的状态是对象的属性值的集合,表示对象的某个时刻的状态。

- 行为(Behavior):对象可以执行的操作,描述了对象能够做什么。

- 身份(Identity):每个对象都有唯一的身份,可以通过身份来区分不同的对象。

2.2 类和对象之间的关系有哪些?类和对象之间有以下关系: - 实例化(Instantiation):类是对象的模板,对象是类的一个具体实例。

- 继承(Inheritance):一个类可以继承另一个类的属性和方法。

- 聚合(Aggregation):一个类可以包含其他类的对象作为成员变量。

- 关联(Association):两个类之间存在某种关系,一个类的对象可以访问另一个类的对象。

第四章 管理信息库MIB-2

第四章 管理信息库MIB-2


2.用于配置管理的System组对象
对 象 ifNumber ifTable ifEntry ifIndex ifDescr ifType ifMtu ifSpeed ifPhysAddress ifAdminStatus ifOperStatus ifLastChange ifInOctets ifInUcastPkts ifInNUcastPkts ifInDiscards ifInErrors

4.用于计费管理的Interfaces组对象
◦ 基于流量计费(字节):使用ifInOctets和ifOutOctets 可以确定一个接口发送和接收的字节数 ◦ 基于流量的计费(数据包):使用ifInUcastPkts、 ifOutUcastPkts、ifInNUcastPkts和ifOutNUcastPkts 将给出计费进程所必需的数据包数。

3.用于性能管理的Interfaces组对象
◦ 性能管理应用需要观察接口的错误率,可以通过接口的 总包数和错误数计算。 ◦ 接口收到的总包数:
ifInUcastPkts+ifInNUcastPkts
◦ 发送的总包数:
ifOutUcastPkts+ifOutNUcastPkts
◦ 接口运行不正常、媒体有问题、设备中的缓冲有问题等 都可能导致错误或丢弃数据包。

1.用于失效管理的System组对象
◦ sysServices:协议层服务。设L是协议层编号,如果使用 了L层的协议,则二进制数值的第L位为1,否则为0。
7 6 5 4 3 2 1 0
0000100B,即4,主要在第三层 1001000B,即72,第四层和第七层

1.用于失效管理的System组对象

JAVA大学实用教程(第四版)课后习题答案

JAVA大学实用教程(第四版)课后习题答案

第一章Java语言概述2.“java编译器将源文件编译为的字节码文件是机器码”这句话正确吗?答:不正确3.java应用程序的主类必须含有怎样的方法?答:含有main方法4。

“java应用程序必须有一个类是public类”这句话正确吗?答;不正确,只能有一个public类5。

“java Applet程序的主类必须是public类”这句话正确吗?答:正确,因为java Applet主类必须是Applet类的子类并且是public的类6。

请叙述java源程序的命名规则。

答:与public的类同名。

7。

源文件生成的字节码文件在运行时都加载到内存中吗?答:非也,动态随需要运行才加载。

8.面向对象的程序设计语言有那些基本特征?答:封装;继承;多态性。

9.在Java程序中有多个类文件时,用Java命令应该运行那个类?答:具有main方法的类第二章基本数据类型和数组4。

下列哪些语句是错的?Int x=120;Byte b=120;b=x;答:B=x;错应为b=(byte)x5。

下列哪些语句是错的?答:y=d;错,应y=(float)d6。

下列两个语句是等价的吗?Char x=97;Char x=‘a’;答:是等价的。

7。

下列system.out.printf语句输出结果是什么?Int a=97;Byte b1=(byte)128;Byte b2=(byte)(-129);System.out.printf(“%c,%d,%d”,a,b1,b2);如果输出语句改为:System.out.printf(“%d,%d,%d”,a,b1,b2);输出什么?答:输出a ,-128,127修改后输出97,-128,1278.数组是基本数据类型吗?怎样获取数组的长度?答:不是基本数据类型,是复合数据类型。

可以通过:数组名.length的方法获得数组长度9。

假设有两个int类型数组:Int[] a=new int[10];Int[] b=new int[8];b=a;A[0]=100;B[0]的值一定是100吗?答;一定,因为a数组与b数组引用相同。

类、对象和接口

类、对象和接口

16
方法声明
返回类型 { ······//方法体内容 //方法体内容 // } 方法名(形式参数) 方法名(形式参数)
17
5. 构造方法
• 构造方法是一种特殊方法,它的名字必须与它所 构造方法是一种特殊方法, 在的类的名字完全相同,而且没有类型。 在的类的名字完全相同,而且没有类型。构造方 法也可以重载。 法也可以重载。
2
一个具体的类
3
1.类声明 1.类声明
• 类声明由四部分组成:类修饰符、类关键字class、 类声明由四部分组成:类修饰符、类关键字class、 class 声明父类、实现接口,其一般形式如下: 声明父类、实现接口,其一般形式如下: • [public][abstract|final] class 类名 [extends 父 类名] 接口列表] 类名 [implements 接口列表 { …… }
class 梯形 { float 上底 下底 高; 上底,下底 下底,高 梯形() //构造方法 梯形 构造方法 { 上底 上底=60; 下底=100; 下底 高=20; } 梯形(float x,int y,float h) 梯形 { 上底 上底=x; 下底=y; 下底 高=h; } }
//构造方法 构造方法
21
访问权限
• 所谓访问权限是指对象是否可以通过“.”运算符 所谓访问权限是指对象是否可以通过“ 运算符 操作自己的变量或通过“ 运算符使用类中的方 操作自己的变量或通过“.”运算符使用类中的方 法。 • 访问限制修饰符有 访问限制修饰符有private、protected和public, 、 和 , 都是Java的关键字,用来修饰成员变量或方法。 的关键字, 都是 的关键字 用来修饰成员变量或方法。 • 1.私有变量和私有方法:用关键字private修饰的 私有变量和私有方法:用关键字 修饰的 私有变量和私有方法 成员变量和方法。 成员变量和方法。 • 一个类在另外一个类中创建一个对象后,该对象 一个类在另外一个类中创建一个对象后, 不能访问自己的私有变量和私有方法

uml 基础教程 第四章-类图和对象图

uml 基础教程 第四章-类图和对象图
和属性的命名一样,操作名称的第一个字母小写,如 果操作名称包含多个单词,那么单词需要进行合并,并且 除了第一个英文单词外其余单词的首字母要大写。
• 操作名列表放在属性名列表之下,两者之间用分隔线
隔开,如图所示:
WashingMachine
brandName modelName serialNumber capacity addClothes( ) removeClothes( ) addClothes( ) turnOn( )
4.2.2 操作
• 操作指的是类所能做的事情,或者另一个类能 对类做的事情。类的操作可以根据不同的可见性 由其他任何对象请求以影响其行为。属性是描述 类的对象特性的值,而操作用于操纵属性的值进 行改变或执行其他动作。
• 操作有时被称为函数或方法,在类的图形表示 中它们位于类的底部。一个类可以有零个或多个 操作,并且每个操作只能应用于该类的对象。
其次,为用户提供易用性。设定一些初始值能够有效帮 助用户进行输入,从而能够为用户提供很好的易用性。
• 类的属性在该类对象中都有具体值,如下图:
myWasher: WashingMachine brandName= “ Laundatorium” ‘modelName= “Washmeister”serialNumber= “ GL57774” Capacity=16
3. 返回类型
返回类型指定了由操作返回的数据类型。它可 以是任意有效的数据类型,返回类型至多一个。 如果操作没有返回值,在具体编程语言中一般要 加上一个关键字void来表示,也就是其返回类型 必须是void。
4. 属性字符串
用来附加一些关于操作的除了预定义元素之外 的信息,方便对操作的一些内容进行说明。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章类、对象和接口例子1class XiyoujiRenwu{ float height,weight;String head, ear,hand,foot, mouth;void speak(String s){ System.out.println(s);}}class A{ public static void main(String args[]){ XiyoujiRenwu zhubajie; //声明对象zhubajie=new XiyoujiRenwu(); //为对象分配内存,使用new 运算符和默认的构造方法 }}例子2class Point{ int x,y;Point(int a,int b){ x=a;y=b;}}public class A{ public static void main(String args[]){ Point p1,p2; //声明对象p1和p2p1=new Point(10,10); //为对象分配内存,使用 new 和类中的构造方法p2=new Point(23,35); //为对象分配内存,使用 new 和类中的构造方法}}例子3class XiyoujiRenwu{ float height,weight;String head, ear,hand,foot,mouth;void speak(String s){ head="歪着头";System.out.println(s);}}class Example4_3{ public static void main(String args[]){ XiyoujiRenwu zhubajie,sunwukong;//声明对象zhubajie=new XiyoujiRenwu(); //为对象分配内存sunwukong=new XiyoujiRenwu();zhubajie.height=1.80f; //对象给自己的变量赋值zhubajie.head="大头";zhubajie.ear="一双大耳朵";sunwukong.height=1.62f; //对象给自己的变量赋值sunwukong.weight=1000f;sunwukong.head="绣发飘飘";System.out.println("zhubajie的身高:"+zhubajie.height);System.out.println("zhubajie的头:"+zhubajie.head);System.out.println("sunwukong的重量:"+sunwukong.weight);System.out.println("sunwukong的头:"+sunwukong.head);zhubajie.speak("俺老猪我想娶媳妇"); //对象调用方法System.out.println("zhubajie现在的头:"+zhubajie.head);sunwukong.speak("老孙我重1000斤,我想骗八戒背我"); //对象调用方法System.out.println("sunwukong现在的头:"+sunwukong.head);}}例子4class 梯形{ float 上底,下底,高,面积;梯形(float x,float y,float h){ 上底=x;下底=y;高=h;}float 计算面积(){ 面积=(上底+下底)*高/2.0f;return 面积;}void 修改高(float height){ 高=height;}float 获取高(){ return 高;}}public class Example4_4{ public static void main(String args[]){ 梯形 laderOne=new 梯形(12.0f,3.5f,50),laderTwo=new 梯形(2.67f,3.0f,10);System.out.println("laderOne的高是:"+laderOne.获取高());System.out.println("laderTwo的高是:"+laderTwo.获取高());System.out.println("laderOne的面积是:"+laderOne.计算面积());System.out.println("laderTwo的面积是:"+laderTwo.计算面积());laderOne.修改高(10);float h=laderOne.获取高();laderTwo.修改高(h*2);System.out.println("laderOne现在的高是:"+laderOne.获取高());System.out.println("laderTwo现在的高是:"+laderTwo.获取高());System.out.println("laderOne现在的面积是:"+laderOne.计算面积());System.out.println("laderTwo现在的面积是:"+laderTwo.计算面积());}}例子5class People{ String face;void setFace(String s){ face=s;}}class A{ void f(int x,double y,People p){ x=x+1;y=y+1;p.setFace("笑脸");System.out.println("参数x和y的值分别是:"+x+","+y);System.out.println("参数对象p的face是:"+p.face);}}public class Example4_5{ public static void main(String args[]){ int x=100;double y=100.88;People zhang=new People();zhang.setFace("很严肃的样子");A a=new A();a.f(x,y,zhang);System.out.println("main方法中x和y的值仍然分别是:"+x+","+y);System.out.println("main方法中对象zhang的face是:"+zhang.face);}}例子6class 圆{ double 半径;圆(double r){ 半径=r;}double 计算面积(){ return 3.14*半径*半径;}void 修改半径(double 新半径){ 半径=新半径;}double 获取半径(){ return 半径;}}class 圆锥{ 圆底圆;double 高;圆锥(圆 circle,double h){ this.底圆=circle;this.高=h;}double 计算体积(){ double volume;volume=底圆.计算面积()*高/3.0;return volume;}void 修改底圆半径(double r){ 底圆.修改半径(r);}double 获取底圆半径(){ return 底圆.获取半径();}}class Example4_6{ public static void main(String args[]){ 圆 circle=new 圆(10);圆锥 circular=new 圆锥(circle,20);System.out.println("圆锥底圆半径:"+circular.获取底圆半径());System.out.println("圆锥的体积:"+circular.计算体积());circular.修改底圆半径(100);System.out.println("圆锥底圆半径:"+circular.获取底圆半径());System.out.println("圆锥的体积:"+circular.计算体积());}}例子7class 梯形{ float 上底,高;static float 下底;梯形(float x,float y,float h){ 上底=x; 下底=y; 高=h;}float 获取下底(){ return 下底;}void 修改下底(float b){ 下底=b;}}class Example4_7{ public static void main(String args[]){ 梯形 laderOne=new 梯形(3.0f,10.0f,20),laderTwo=new 梯形(2.0f,3.0f,10);梯形.下底=200; //通过类名操作类变量 System.out.println("laderOne的下底:"+laderOne.获取下底());System.out.println("laderTwo的下底:"+laderTwo.获取下底());laderTwo.修改下底(60); //通过对象操作类变量System.out.println("laderOne的下底:"+laderOne.获取下底());System.out.println("laderTwo的下底:"+laderTwo.获取下底());}}例子8class Fibi{ public static long fibinacii(int n){ long c=0;if(n==1||n==2)c=1;elsec=fibinacii(n-1)+fibinacii(n-2);return c;}}public class Example4_8{ public static void main(String args[]){ System.out.println(Fibi.fibinacii(7));}}例子9package tom.jiafei;public class PrimNumber{ public void getPrimnumber(int n){ int sum=0,i,j;for(i=1;i<=n;i++){ for(j=2;j<=i/2;j++){ if(i%j==0)break;}if(j>i/2)System.out.print(" "+i);}}public static void main(String args[]){ PrimNumber p=new PrimNumber();p.getPrimnumber(20);}}例子10import java.applet.Applet;import java.awt.*;public class Example4_10 extends Applet{ Button redbutton;public void init(){ redbutton=new Button("我是一个红色的按钮");redbutton.setBackground(Color.red);redbutton.setForeground(Color.white);add(redbutton);}}例子11import tom.jiafei.*; //引入包tom.jiafei中的类public class Example4_11{ public static void main(String args[]){ PrimNumber num=new PrimNumber();//用包tom.jiafei中的类创建对象num.getPrimnumber(30);}}例子12public class Example4_12{ public static void main(String args[]){ PrimNumber num=new PrimNumber();//要保证PrimNuber类和Example4_12类在同一目录中 num.getPrimnumber(120);}}Trangel.javapackage tom.jiafei;public class Trangle{ double sideA,sideB,sideC;boolean boo;public Trangle(double a,double b,double c){ sideA=a;sideB=b;sideC=c;if(a+b>c&&a+c>b&&c+b>a){ System.out.println("我是一个三角形");boo=true;}else{ System.out.println("我不是一个三角形");boo=false;}}public void 计算面积(){ if(boo){ double p=(sideA+sideB+sideC)/2.0;double area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)) ;System.out.println("面积是:"+area);}else{ System.out.println("不是一个三角形,不能计算面积");}}public void 修改三边(double a,double b,double c){ sideA=a;sideB=b;sideC=c;if(a+b>c&&a+c>b&&c+b>a){ boo=true;}else{ boo=false;}}}例子13import tom.jiafei.Trangle;class Example4_13{ public static void main(String args[]){ Trangle trangle=new Trangle(12,3,1);trangle.计算面积();trangle.修改三边(3,4,5);trangle.计算面积();}}例子14class Example4_14{ private int money;Example4_14(){ money=2000;}private int getMoney(){ return money;}public static void main(String args[]){ Example4_14 exa=new Example4_14();exa.money=3000;int m=exa.getMoney();System.out.println("money="+m);}}例子15class Father{ private int money;float weight,height;String head;void speak(String s){ System.out.println(s);}}class Son extends Father{ String hand,foot;}public class Example4_15{ public static void main(String args[]){ Son boy;boy=new Son();boy.weight=1.80f;boy.height=120f;boy.head="一个头";boy.hand="两只手 ";boy.foot="两只脚";boy.speak("我是儿子");System.out.println(boy.hand+boy.foot+boy.head+boy.weight+boy.height);}}例子16class Chengji{ float f(float x,float y){ return x*y;}}class Xiangjia extends Chengji{ float f(float x,float y){ return x+y ;}}public class Example4_16{ public static void main(String args[]){ Xiangjia sum;sum=new Xiangjia();float c=sum.f(4,6);System.out.println(c);}}例子17class Area{ float f(float r ){ return 3.14159f*r*r;}float g(float x,float y){ return x+y;}}class Circle extends Area{ float f(float r){ return 3.14159f*2.0f*r;}}public class Example4_17{ public static void main(String args[]){ Circle yuan;yuan=new Circle();float length=yuan.f(5.0f);float sum=yuan.g(232.645f,418.567f);System.out.println(length);System.out.println(sum);}}例子18class A{final double PI=3.1415926;public double getArea(final double r){return PI*r*r;}}public class Example4_18{ public static void main(String args[]){ A a=new A();System.out.println("面积:"+a.getArea(100));}}例子19class 类人猿{ private int n=100;void crySpeak(String s){ System.out.println(s);}}class People extends 类人猿{ void computer(int a,int b){ int c=a*b;System.out.println(c);}void crySpeak(String s){ System.out.println("**"+s+"**");}}class Example4_19{ public static void main(String args[]){ 类人猿 monkey=new People();monkey.crySpeak("I love this game");People people=(People)monkey;puter(10,10);}}例子20class 动物{ void cry(){}}class 狗 extends 动物{ void cry(){ System.out.println("汪汪.....");}}class 猫 extends 动物{ void cry(){ System.out.println("喵喵.....");}}class Example4_20{ public static void main(String args[]){ 动物 dongwu;dongwu=new 狗();dongwu.cry();dongwu=new 猫();dongwu.cry();}}例子21abstract class A{ abstract int min(int x,int y);int max(int x,int y){ return x>y?x:y;}}class B extends A{ int min(int x,int y){ return x<y?x:y;}}public class Example4_21{ public static void main(String args[]){ A a;B b=new B();int max=b.max(12,34);int min=b.min(12,34);System.out.println("max="+max+" min="+min);a=b;max=a.max(12,34);System.out.println("max="+max);}}例子22abstract class 图形{ public abstract double 求面积();}class 梯形 extends 图形{ double a,b,h;梯形(double a,double b,double h){ this.a=a;this.b=b;this.h=h;}public double 求面积(){ return((1/2.0)*(a+b)*h);}}class 圆形 extends 图形{ double r;圆形(double r){ this.r=r;}public double 求面积(){ return(3.14*r*r);}}class 堆{ 图形底;double 高;堆(图形底,double 高){ this.底=底;this.高=高;}void 换底(图形底){ this.底=底;}public double 求体积(){ return (底.求面积()*高)/3.0;}}public class Example4_22{ public static void main(String args[]){ 堆 zui;图形 tuxing;tuxing=new 梯形(2.0,7.0,10.7);System.out.println("梯形的面积"+tuxing.求面积());zui=new 堆(tuxing,30);System.out.println("梯形底的堆的体积"+zui.求体积());tuxing=new 圆形(10);System.out.println("半径是10的圆的面积"+tuxing.求面积());zui.换底(tuxing);System.out.println("圆形底的堆的体积"+zui.求体积());}}例子23class Student{ int number;String name;Student(){}Student(int number,String name){ this.number=number;=name;System.out.println("I am "+name+ "my number is "+number);}}class Univer_Student extends Student{ boolean 婚否;Univer_Student(int number,String name,boolean b){ super(number,name);婚否=b;System.out.println("婚否="+婚否);}}public class Example4_23{ public static void main(String args[]){ Univer_Student zhang=new Univer_Student(9901,"和晓林",false);}}例子24class Sum{ int n;float f(){ float sum=0;for(int i=1;i<=n;i++)sum=sum+i;return sum;}}class Average extends Sum{ int n;float f(){ float c;super.n=n;c=super.f();return c/n;}float g(){ float c;c=super.f();return c/2;}}public class Example4_24{ public static void main(String args[]){ Average aver=new Average();aver.n=100;float result_1=aver.f();float result_2=aver.g();System.out.println("result_1="+result_1);System.out.println("result_2="+result_2);}}例子25interface Computable{ int MAX=100;int f(int x);}class China implements Computable{ int number;public int f(int x) //不要忘记public关键字{ int sum=0;for(int i=1;i<=x;i++){ sum=sum+i;}return sum;}}class Japan implements Computable{ int number;public int f(int x){ return 44+x;}}public class Example4_25{ public static void main(String args[]){ China zhang;Japan henlu;zhang=new China();henlu=new Japan();zhang.number=991898+Computable.MAX;henlu.number=941448+Computable.MAX;System.out.println("number:"+zhang.number+"求和"+zhang.f(100));System.out.println("number:"+henlu.number+"求和"+henlu.f(100));}}例子26interface 收费{ public void 收取费用();}interface 调节温度{ public void controlTemperature();}class 公共汽车 implements 收费{ public void 收取费用(){ System.out.println("公共汽车:一元/张,不计算公里数");}}class 出租车 implements 收费, 调节温度{ public void 收取费用(){ System.out.println("出租车:1.60元/公里,起价3公里");}public void controlTemperature(){ System.out.println("安装了Hair空调");}}class 电影院 implements 收费,调节温度{ public void 收取费用(){ System.out.println("电影院:门票,十元/张");}public void controlTemperature(){ System.out.println("安装了中央空调");}}class Example4_26{ public static void main(String args[]){ 公共汽车七路=new 公共汽车();出租车天宇=new 出租车();电影院红星=new 电影院();七路.收取费用();天宇.收取费用();红星.收取费用();天宇.controlTemperature();红星.controlTemperature();}}例子27interface ShowMessage{ void 显示商标(String s);}class TV implements ShowMessage{ public void 显示商标(String s){ System.out.println(s);}}class PC implements ShowMessage{ public void 显示商标(String s){ System.out.println(s);}}public class Example4_27{ public static void main(String args[]){ ShowMessage sm;sm=new TV();sm.显示商标("长城牌电视机");sm=new PC();sm.显示商标("联想奔月5008PC机");}}例子28interface Computerable{ public double 求面积();}class 梯形 implements Computerable{ double a,b,h;梯形(double a,double b,double h){ this.a=a;this.b=b;this.h=h;}public double 求面积(){ return((1/2.0)*(a+b)*h);}}class 圆形 implements Computerable{ double r;圆形(double r){ this.r=r;}public double 求面积(){ return(3.14*r*r);}}class 堆{ Computerable 底;double 高;堆(Computerable 底,double 高){ this.底=底;this.高=高;}void 换底(Computerable 底){ this.底=底;}public double 求体积(){ return (底.求面积()*高)/3.0;}}public class Example4_28{ public static void main(String args[]){ 堆 zui;Computerable bottom;bottom=new 梯形(2.0,7.0,10.7);System.out.println("梯形的面积"+bottom.求面积());zui=new 堆(bottom,30);System.out.println("梯形底的堆的体积"+zui.求体积());bottom=new 圆形(10);System.out.println("半径是10的圆的面积"+bottom.求面积());zui.换底(bottom);System.out.println("圆形底的堆的体积"+zui.求体积());}}例子29interface SpeakHello{ void speakHello();}class Chinese implements SpeakHello{ public void speakHello(){ System.out.println("中国人习惯问候语:你好,吃饭了吗? ");}}class English implements SpeakHello{ public void speakHello(){ System.out.println("英国人习惯问候语:你好,天气不错 ");}}class KindHello{ public void lookHello(SpeakHello hello){ hello.speakHello();}}public class Example4_29{ public static void main(String args[]){ KindHello kindHello=new KindHello();kindHello.lookHello(new Chinese());kindHello.lookHello(new English());}}例子30class China{ final String nationalAnthem="义勇军进行曲";Beijing beijing;China(){ beijing=new Beijing();}String getSong(){ return nationalAnthem;}class Beijing{ String name="北京";void speak(){ System.out.println("我们是"+name+" 我们的国歌是:"+getSong()); }}}public class Example4_30{ public static void main(String args[]){ China china=new China();china.beijing.speak();}}例子31class Cubic{ double getCubic(int n){ return 0;}}abstract class Sqrt{ public abstract double getSqrt(int x);}class A{ void f(Cubic cubic){ double result=cubic.getCubic(3);System.out.println(result);}}public class Example4_31{ public static void main(String args[]){ A a=new A();a.f(new Cubic(){ double getCubic(int n){ return n*n*n;}});Sqrt ss=new Sqrt(){ public double getSqrt(int x){ return Math.sqrt(x);}};double m=ss.getSqrt(5);System.out.println(m);}}例子32interface Cubic{ double getCubic(int n);}interface Sqrt{ public double getSqrt(int x);}class A{ void f(Cubic cubic){ double result=cubic.getCubic(3);System.out.println(result);}}public class Example4_32{ public static void main(String args[]){ A a=new A();a.f(new Cubic(){ public double getCubic(int n){ return n*n*n;}});Sqrt ss=new Sqrt(){ public double getSqrt(int x) { return Math.sqrt(x);}};double m=ss.getSqrt(5);System.out.println(m);}}例子33public class Example4_33{ public static void main(String args[ ]){ int n=0,m=0,t=555;try{ m=Integer.parseInt("8888");n=Integer.parseInt("abc789");t=9999;}catch(NumberFormatException e){ System.out.println("发生异常:"+e.getMessage());e.printStackTrace();n=123;}System.out.println("n="+n+",m="+m+",t="+t);}}例子34class NopositiveException extends Exception{ String message;NopositiveException(int m,int n){ message="数字"+m+"或"+n+"不是正整数";}public String toString(){ return message;}}class Computer{ public int getMaxCommonDivisor(int m,int n) throws NopositiveException { if(n<=0||m<=0){ NopositiveException exception=new NopositiveException(m,n);throw exception;}if(m<n){ int temp=0;temp=m;m=n;n=temp;}int r=m%n;while(r!=0){ m=n;n=r;r=m%n;}return n;}}public class Example4_34{ public static void main(String args[]){ int m=24,n=36,result=0;Computer a=new Computer();try { result=a.getMaxCommonDivisor(m,n);System.out.println(m+"和"+n+"的最大公约数 "+result);m=-12;n=22;result=a.getMaxCommonDivisor(m,n);System.out.println(m+"和"+n+"的最大公约数 "+result);}catch(NopositiveException e){ System.out.println(e.toString());}}}例子35import ng.reflect.*;class Rect{ double width,height,area;public double getArea(){ area=height*width;return area;}}public class Example4_35{ public static void main(String args[]){ Rect rect=new Rect();Class cs=rect.getClass();String className=cs.getName();Constructor[] con=cs.getDeclaredConstructors();Field[] field=cs.getDeclaredFields() ;Method[] method=cs.getDeclaredMethods();System.out.println("类的名字:"+className);System.out.println("类中有如下的成员变量:");for(int i=0;i<field.length;i++){ System.out.println(field[i].toString());}System.out.println("类中有如下的方法:");for(int i=0;i<method.length;i++){ System.out.println(method[i].toString());}System.out.println("类中有如下的构造方法:");for(int i=0;i<con.length;i++){ System.out.println(con[i].toString());}}}例子36class Rect{ double width,height,area;public double getArea(){ area=height*width;return area;}}public class Example4_36{ public static void main(String args[]){ try{ Class cs=Class.forName("Rect");Rect rect=(Rect)cs.newInstance();rect.width=100;rect.height=200;System.out.println("rect的面积"+rect.getArea());}catch(Exception e){}}}例子37public class Example4_37{ public static void main(String args[ ]){ char a[]={'a','b','c','D','E','F'};for(int i=0;i<a.length;i++){ if(Character.isLowerCase(a[i])){ a[i]=Character.toUpperCase(a[i]);}else if(Character.isUpperCase(a[i])){ a[i]=Character.toLowerCase(a[i]);}}for(int i=0;i<a.length;i++){ System.out.print(" "+a[i]);}}}Mymoon.mfManifest-Version: 1.0Main-Class: ACreated-By: 1.4(Sun Microsystems Inc.)Test1.javapublic class Test1{ public void fTest1(){ System.out.println("I am a method In Test1 class");}}Test2.javapublic class Test2{ public void fTest2(){ System.out.println("I am a method In Test2 class");}}moon.mfManifest-Version: 1.0Class: Test1 Test2Created-By: 1.4(Sun Microsystems Inc.)。

相关文档
最新文档