java09(第五章)
第5章 Java中的面向对象特性

堆内存 代码区 public class Person { static int id; int age = 20; public static void main(String[] args) {… } } id age
Zhangsan.id
Zhangsan.age lisi.id
lisi.age
例2: 五子棋
面向过程:
1、开始游戏, 2、黑子先走, 3、绘制画面, 4、判断输赢, 5、轮到白子, 6、绘制画面, 7、判断输赢, 8、返回步骤2, 9、输出最后结果。
面向对象:
1、黑白双方 --这两方的行为是一模一样的, 2、棋盘系统 --负责绘制画面, 3、规则系统 --负责判定诸如犯规、输赢等。
a product
1.2 ×× 1.728 ×× 1.2
参数传递方式 值传递方式
方式:方法调用时,为形参分配单元,并将实参的值复制到形参
中;调用结束,形参单元被释放,实参单元仍保留并维持原 值 特点: 形参与实参占用不同的内存单元 单向传递
Person zhangSan=new Person(“张三”,18,“男”);
zhangSan
0xabcd
张三 null
name sex age
0 18
栈内存 实体的内存地址
男 0
堆内存
使用new 运算符和类的构造方法为声明 的对象分配内存,如果类中没有构造方法, 系统会调用默认的构造方法,默认的构造方 法是无参数的。
事万物皆对象”。 对象可以看成是静态属性(成员变量)和动态属 性(方法)的封装体。 类是用来创建同一类型的对象的“模板”,在 一个类中定义了该类对象所应具有的成员变量 以及方法。 移J2SDK提供了很多类供编程人员使用,编程 人员也可定义自己的类。
Java9

(Java2网络编程基础 Internet Programming Foundation with Java2 网络编程基础) 网络编程基础
Chap9
10 / 40
顶级容器
• JFrame:用于框架窗口的类,此窗口带有 :用于框架窗口的类, 边框、标题、 边框、标题、用于关闭和最小化窗口的图 标等。 标等。带 GUI 的应用程序通常至少使用一 个框架窗口 • JDialog:用于对话框的类 : • JApplet:用于使用 Swing 组件的 Java : Applet 的类
Chap9
13 / 40
二、基本的 Swing 应用程序
导入必要的包, 导入必要的包,一般还需导 入: import javax.swing.*; import java.awt.*; public class HelloSwing { import java.awt.event.*; 设置一个 public static void main(String[] args) { 顶级容器 JFrame frame = new JFrame("HelloSwing"); 创建一个 JLabel label = new JLabel("你好,Swing"); 你好, 你好 Swing组 组 frame.getContentPane().add(label); 件 将组件添加到 frame.setDefaultCloseOperation 容器内容窗格 (JFrame.EXIT_ON_CLOSE); frame.setSize(300,200); frame.setVisible(true); } } 实现了在单击“关闭” 实现了在单击“关闭”按钮 时, 可以关闭窗口。 可以关闭窗口。如果使用的 早期版本的平台, 早期版本的平台,则需要通 过事件监听器实现
java复习题库第五、六章

第五章多线程选择题1. 线程调用了sleep()方法后,该线程将进入( C )状态。
A.可运行状态B.运行状态C.阻塞状态D.终止状态2. 关于java线程,下面说法错误的是(D)A.线程是以CPU为主体的行为B. java利用线程使整个系统成为异步C.创建线程的方法有两种:实现Runnable接口和继承Thread类D. 新线程一旦被创建,它将自动开始运行3.在java语言中,临界区可以是一个语句块,或者是一个方法,并用(A )关键字标识。
A.synchronizedB.includeC.importD.Thread4. 线程控制方法中,yield()的作用是(D)A.返回当前线程的引用B.使比其低的优先级线程执行C.强行终止线程D.只让给同优先级线程运行5. java用(A)机制实现了进程之间的异步执行A.监视器B.虚拟机C.多个CPUD.异步调用6. 下面代码运行的结果是什么?(D)public class MyThread implements Runnable {String myString = "Yes ";public void run() {this.myString = "No ";}public static void main(String[] args) {MyThread t = new MyThread();new Thread(t).start();for (int i=0; i < 10; i++)System.out.print(t.myString);}}A. 打印yes yes yes yes yes yes B. 打印no no no no no no no noC. 打印yes no yes no ye no ye no D. 不确定二、填空题1.____多线程____是java程序的并发机制,它能同步共享数据、处理不同的事件。
解析JAVA程序设计第五章课后答案

第5章习题解答1.流的主要特征有哪些,用流来实现JAVA中的输入输出有什么优点?答: 一是单向性,即数据只能从数据源流向数据宿;二是顺序性,先从数据源流出的数据一定比后流出的数据先到达数据宿;三是数据流必须而且只能和一个数据源与一个数据宿相连。
优点是体现了面向对象程序设计的概念,通过流可以把对不同类型的输入/输出设备的操作统一为用流来实现。
2.对字节流和字符流进行读写操作的一般步骤是什么?答:声明流对象,创建流对象,通过流对象进行读(写)操作,关闭流对象。
3. 有哪些常用的字节流和字符流,他们的主要区别是什么?答: InputStream/OutputStrem:普通字节流,所有字节流的基类。
FileInputStream/ FileOutputStream:用于从文件中读写数据。
BufferedInputStream/ BufferedOutputStream:用于从缓冲区输入流中读写数据。
采用缓冲区流可减少实际上从外部输入设备上读写数据的次数,从而提高效率。
DataInputStream/ DataOutputStream:按读写数据对象的大小从字节流中读写数据,而不是象其它字节流那样以字节为基本单位。
PipedInputStream/ PipedOutputStream:管道输流用于从另一个线程中读写数据。
4.么是异常?说明Java中的异常处理机制?试述JAVA中异常的抛出和传递过程?答: 异常是程序设计语言提供的一种机制,它用于在程序运行中的非常规情况下,控制程序对非常规情况进合理的处理。
Java提供了try-catch-finally语句来对异常进行处理。
先按照正常顺序执行try子句中的语句,若在执行过程中出现异常,则try子句中还未被执行的语句将再也不会被执行。
而程序控制立即转移到catch子句,将发生的异常与catch子句中的异常进行匹配,若找到一个匹配,就执行该catch子句中的语句。
Java语言程序设计第五章PPT教学课件

voidpf5u(b)l;icpuvobildicfv3o( i)d{f5}( ){
}
public vpoSuiydbslfti4ecm(c)l.ao{sus}t.Tpersitn{tln("我就对f5( )方法感兴趣!");
public} voidpfu5b(l)ic{st}atic void main(String[ ] args) {
作用二:继承时,可用来修饰父类方法,防止 子类同名方法发生重写。
public class Mammal {
public final void call( ) {
System.out.println("哺乳动物会叫。");
}
public class Cat extend Mammal {
}
public void call() { //编译时发生错误
}
Line l = new Line();
public class Line implemCiercnltescS=hanpeew{Circle();
6
6
接口
演示接口
当所有方法均为抽象的,即没有具体实现时, 可使用interface关键字定义为接口,它是某个 事物对外提供的一些功能的申明 。
接口中的方法均为抽象声明的,及没有具体实 现;接口中的属性均为静态常量。
使用implements关键字来实现接口,可以利用 接口实现多态。
7
7
接口
接口中的方法不能有任何方法体实现。
声明抽象类语法:
– abstract class{…… }
应用场合:父类中的某些抽象方法不包含任何 逻辑,子类可以通过方法重写的机制提供这种 抽象方法的实现细节。
Java09(GUI编程)

BorderLayout
委托模型的优缺点
事件处理和产生事件的对象分离,更加灵活, 符合OOP的一个设计准则,分离。 事件处理和时间对象可以有多对多的关系, 可以重用事件处理对象。 程序结构复杂。 由1.0模型向1.1模型转换比较复杂。
Q&A
本章结束 谢谢大家
确定布局管理器
缺省的布局管理器
Window 、Frame、Dialog —— BorderLayout Panel 、Applet —— FlowLayout:
选择布局管理器的方法
建立布局管理器类的对象 利用容器的 setLayout 为容器指定布局(即指定一个布局管理 器的对象)
例:将myFrame布局设定为FlowLayout类型 myFrame.setLayout(new FlowLayout());
JAVA GUI编程简介
通过图形用户界面GUI (graphics user interface ),用户和程序之间可以方便地进行交 互。在Java语言中提供了专门的类库来生成各种标 准图形界面元素和各种处理图形界面的各种事件, 以实现图形用户界面的设计
目前在JAVA中实现图形用户界面主要有两种技术: AWT和Swing
允许用户选择自己喜欢的界面风格提供了多种与用户交互的手段为用户提供高质量的2d图形图像和文本的api支持对象的拖放swing组件全部是由纯java编写的功能强大如按钮和标签可以显示图像或图片组件不一定是长方形swing使用的包
第5章_JavaBean构件模型

通过使用Beans的属性编辑器
使用更复杂Bean定制器
通信
构 Bean之间通过事件互相通信,开发工具可以检测一个
件 概 述
Bean可以接收和引发的事件
持续
使Bean可以存储和恢复其状态
一个Bean的属性被修改以后,可以通过对象的持续化
机制保存下来,并可以在需要的时候恢复
13
访 问
将变量customer与com.ibm.ils.domain.Customer关联
id="customer" scope="session"
type="com.ibm.ils.domain.Customer"
除Customer从session对象(HttpSession)中获取外,
构 件
构件复合组装:源代码级的组装和基于构件对象互 操作性的运行级组装
概 标准化:构件模型的标准化和构件库的标准化 述 软件构架:如何快速、可靠地应用可复用构件系统
进行系统构造的方式,着重于软件系统自身的整体
结构和构件间的互联
5
JavaBean
JavaBeans vs. JavaBean
构 件 概 述
访
/>
问
name
设置的<jsp:useBean>的'id’
property
期望设置 的property的名字
param
property中要请求的param的名字
value
property中期望设置的的新值
30
JSP JavaBean
<jsp:setProperty>
JAVAEE课件 第五章 在JSP页面中使用JavaBean(netbeans)(华北电力大学科技学院)

自动加入set/get方法 在代码编辑区右键重构封装字段
则netbeans自动为数据成员生成get/set方法
public static void main(String[] args) { package com.jsp; System.out.println("test JavaBean!"); public class Student { Student a=new Student(); private long classno; a.setAge(27); private String name; a.setClassno(1001); private int age; a.setName("mike"); private boolean sex; a.setSex(true); private String major; a.setMajor("computer"); public Student() { System.out.println("the name is "+a.getName()); System.out.println("the major is "+a.getMajor()); } if(a.isSex())System.out.println("it is male"); public String getName() { else System.out.println("it is female"); return name; }//手工添加main,以测试bean } 顶层包::Student public void setName(String name) { -classno:long = name; -name:String } -age:int -sex:boolean public int getAge() { return age; } -major:String public void setAge(int age) { this.age = age; } +Student()() public boolean isSex() { return sex; } //boolean变量的get函数是isXXX +setName()() +getName()() public void setSex(boolean sex) { this.sex = sex; } +setAge()() public String getMajor() { return major; } +getAge()() public void setMajor(String major) { this.major = major;} +isSex()() +setSex()() public long getClassno() { return classno; } +getMajor()() public void setClassno(long classno) { this.classno = classno; } +setMajor()()
java第五章习题及答案

1.Internet/Intranet Server(服务器),客户端
2.初始化、启动、停止、退出
3.事件
4.ActionEvent,ActionListener,actionPerformed(ActionEvent e)
5.CheckboxGroup,Checkbox,Choice,List,ItemEvent
result.setText(j.toString(i));
}
catch(ArithmeticException ee){
result.setText("divided by zero");
}
}
}
class clearL implements ActionListener{
public void actionPerformed(ActionEvent e){
TextField result=new TextField(10);
Label la1=new Label("first data:");
Label la2=new Label("second data:");
Label la3=new Label("equal:");
Button plus=new Button("+");
二.选择题:
4.b5.A6.A7.a
二.编程题:
1.
importjava.applet.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassExampleextendsAppletimplementsActionListener{
java9

构造 方法
32
public class MyPanelInFrame extends Frame { public MyPanelInFrame(String str) { super(str); addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } public static void main(String args[]) { MyPanelInFrame fr = new MyPanelInFrame("Panel in Frame"); Panel pan = new Panel(); fr.setSize(500,500); fr.setLayout(null); pan.setSize(200,200); pan.setBackground(Color.yellow); pan.setLocation(100,100);
文本
输入文本 输入更多文本
14
在程序中安排组件的位置和大小时,应该注意以 下两点: 1.容器中的布局管理器负责各个组件的大小和位 置,因此用户无法在这种情况下设置组件的这 些属性。如果试图使用Java语言提供的 setLocation()、 setSize()、 setBounds()等方 法,则都会被布局管理器覆盖。 2.如果用户确实需要亲自设置组件大小或位置, 则应取消该容器的布局管理器,方法为 setLayout(null)。
28
标签—— JLabel类
标签(JLabel)类是专门用于显示输出,它的 功能为显示一串“只读文字”。
java复习指南09级含部分答案

}
//程序9
publicclassTextComponetEventextendsApplet
implementsTextListener,ActionListener{
TextFieldtf;
TextAreata;
publicvoidinit()
{
tf=newTextField(45);
ta=newTextArea(5,45);
}
class Override
{
public static void main(String args[])
{
OverrideDemo ob = new OverrideDemo();
ob.test();
ob.test(10);
ob.test(10,20);
ob.test(123.25);
}
}
//程序3
{System.out.print("Window("+marker+")");}
}
}
classHouse{
Windoww1=newWindow(1);
House(){
System.out.print("House()");
w3=newWindow(33);
}
Windoww2=newWindow(2);
}
public void paint(Graphics g){
g.setColor(Color.blue);
g.drawString("你点击了确定"+ i1+"次",20,100);
g.setColor(Color.red);
JAVA 练习题第5章对象和类

)。 (A)内部类不能有自己的成员方法和成员变量 (B)内部类可用private或protected修饰符修饰 (C)内部类可以作为其他类的成员,而且可访问 它所在的类的成员 (D)除static内部类外,不能在类内声明static成 员
【解析】内部类也可以有自己的成员方法和变量。
答案为 A
函数。
super
2.类与对象的关系是( )。
答案为 A
(A)类是对象的抽象 (B)对象是类的抽象 (C)对象是类的子类 (D)类是对象的具体实例
3.下面哪一个是Java中不合法的标识符( )。
(A)$persons (C)_myVar
(B)twoNum (D)*pointFra bibliotek答案为 D
答案为 D
4.区分类中重载方法的依据是( A.形参列表的类型和顺序 B.不同的形参名称 C.返回值的类型不同 D.访问权限不同
)。
【解析】形参表的类型和顺序不同时区分重载方法的
唯一标志。
答案为 A
5.子类对象能否直接向其父类赋值?父类对象能否向其子类赋值?
( ) A.能,能 B.能,不能 C.不能,能 D.不能,不能 值给子类对象。
据成员。
答案为 C
4.有一个类B,下面为其构造方法的声明,正确 【解析】构造方法没有类型,且方法名与类名相同。
的是( )。 (A)void B(int x) (B)B(int x) {} (C)b(int x) {} (D)void b(int x) {}
{}
答案为 B
答案为 B
在创建对象时必须( )
A、先声明对象,然后才能使用对象 B、先声明对象,为对象分配内存空间,然后才能 使用对象 C、先声明对象,为对象分配内存空间,对对象初 始化,然后才能使用对象 D、上述说法都对
Java课后习题答案第五章

char c[] = {'O','l','y','m','p','i','c',' ','G','a','m','e','s'};
rever(c);
System.out.println(c);
}
public static void rever(char c[]){char t;
for(int i=0,j=c.length-1;i<j;i++,j--)
import java.io.*;
public class Test
{ public static void main(String[] args)
{ int i,a=0,s=0;
System.out.print("请输入数a:");
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
{
sum+=x[i];
}
System.out.println("平均数:"+sum/10);
}
}
17.利用数组输入6位大学生3门课程的成绩,然后计算
(1)每个大学生的总分;
(2)每门课程的平均分;
import java.io.*;
public class Scores
{
public static void main(String[] args)throws IOException
java9

匿名类法可说是类继承法的扩展,其 主要目的是解决某些“变量存取”的 问题,基本上说匿名类法非常好用, 也不复杂
22
import javax.swing.*;
匿名类法
import java.awt.*;
import java.awt.event.*;
public class DrawLine2 extends Japplet
采用定义接口法的步骤
引入系统事件类包,如import java.awt.event.*; 在定义类的同时声明实现动作事件监听器接口,如
implements ActionListener。 在方法中调用事件源对象的addActionListener,注
册事件源对象的事件监听者,如 btn.addActionListener(this)。 实现actionPerformed方法,这个方法是接口中的方 法,应该实现这个方法,加入代码以响应事件的发 生。如单击按钮时,系统将产生ActionEvent事件, 动作事件监听者就调用actionPerformed方法处理这个 事件。
处
对象为监听器(listener)。一个对象要
成为监听器,必须由源对象注册为监听器。
理
– 事件处理方法也称为处理器(handler)。
源对象和监听器对象可以是同一个对象。
一个源对象可以有许多监听器,它拥有一
个所有监听器构成的队列。对象要成为一
个监听器,必须实现标准处理方法
7
例9.2 事件处理的简单例子
Java程序设计教程
第9章 创建用户界面
本章主要内容
图形用户界面的特点 创建图形用户界面的应用程
序或Applet Swing包中的GUI组件 事件处理的方法 布局管理器
java程序设计项目教程第五章答案

参考答案:
1.A 2.A3.C 4.B5.B6.B7.A8.B9.A10.C
二、填空题
参考答案:
1.swing2.布局管理器3.setLayout()4.mouseRelease
5.适配器6.ActionListener7.事件事件源8.JMenu
三、编程
1.设计如图样式的图形用户界面(不要求实现功能)。
JTextField t2=newJTextField("57",3);
JTextField t3=newJTextField("59",3);
JTextField t4=newJTextField(3);
JTextField t5=newJTextField(3);
JTextField t6=newJTextField(3);
JButton answerButton;
JButton questionButton;
JButton scoreButton;
public TestPanel()
{
setLayout(new BorderLayout());
JPanel northPanel=new JPanel();
northPanel.setLayout(new GridLayout(2,1));
JLabel b5 = newJLabel("闹钟时间:");
JLabel b6 = newJLabel("时");
JLabel b7= newJLabel("分");
JLabel b8 = newJLabel("秒");
JLabel b9 = newJLabel("闹钟设置");
Java 编程指南2009版

JAVA编程指南-2009版∙Java 命名约定∙Java 注释约定∙Java 程序设计约定主要的要求:当你违背一个标准时,将其注释出来。
除了这个标准之外的所有标准都可以违背。
如果违背了,你必须说明为什么你要违背这个标准,违背这个标准可能产生的影响,以及标准被应用于这个场合之前可能/必须出现的任何条件。
1. Java 命名约定除了以下几个特例之外,命名时应始终采用完整的英文描述符。
此外,一般应采用小写字母,但类名、接口名以及任何非初始单词的第一个字母要大写。
一般概念:∙使用完整的英文描述符∙采用适用于该领域的术语(每个项目一致,开发经理提交本项目规范)∙采用大小写混合使名字可读∙尽量少用缩写,但如果用了,要明智地使用。
∙避免使用长的名字(小于15 个字母)∙避免使用类似的名字,或者仅仅是大小写不同的名字∙避免使用下划线2. Java 注释约定有关注释的经验法则:问问你自己,你如果从未见过这段代码,要在合理的时间内有效地明白这段代码,你需要哪些信息。
注释量建议在程序的20%左右。
一般概念:∙ 注释应该增加代码的清晰度,易于他人理解∙ 如果你的程序不值得注释,那么它也很可能不值得运行 ∙ 避免行尾注释∙ 避免使用装饰物,也就是说,不要使用象小旗子那样的注释 ∙ 保持注释的简洁 ∙ 在写代码之前写注释∙ 注释出为什么做了一些事,而不仅仅是做了什么Java 注释类型下面的图表说明 Java 注释的三种类型,并给出使用建议。
注释哪些部分下表概括了所写 Java 代码中的每一部分哪些需要注释说明。
3. Java 程序设计约定(一般)有许多的有关 Java 代码可维护性和可改进性的重要约定和标准。
99.9% 的时间里,面向他人,面向你的开发同事编程要比面向机器编程重要得多。
使你的代码为别人所理解是最重要的。
4. Java 包命名路径和方式项目包公用组件ponent.公用包名称.XXX公用组件采用独立工程实现,保证工程的完整性,独立性,概要设计、数据库设计文档对应。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§5.1 Java 类定义
在Deparment类中定义了两个其它类的对象作为它的 属性: deptName 是String 类的对象, String 类是Java类库中 的类,可以为所有的Java程序所用。 deptMgr是ManagerEmployee类的对象, 而ManagerEmployee类是用户自定义的类,要想让
§5.4 访问控制修饰符
类、属性、方法中的修饰符 公共访问控制符 public
缺省访问控制符
私有访问控制符 private
保护访问控制符 protected
私有保护访问控制符 private protected
§5.1 Java 类定义
如果用另一个类的对象作为当前类的属性,则一 定要保证这“另一个类”在当前类中是可见的,即它 可被当前类所引用。 例:class Deparment { int deptNo; String deptName; //定义了String类的对象 int deptTotalEmp; ManagerEmployee deptMgr; //定义了ManagerEmployee类的对象 }
public class VariableTest { public static void main(String args[]) { Variable v=new Variable(); System.out.println(“**before init**”); System.out.println(“x=”+v.x+ “y=”+ v.y+“z=”+v.z); v.init(20,30); System.out.println(“**after init**”); System.out.println(“x=”+v.x+ “y=”+ v.y+“z=”+v.z); } }
抽象类说明符 abstract 说明一个类是抽象类
最终类说明符 final说明一个类是最终类
类的访问控制符 public、 private 等
§5.1 Java 类定义
Java类体 类头定义了类的性质,类体则定义了类的具体内 容,包括类的属性与方法。 class className { 类的属性; 类的方法; }
class_name object_two=new class_name( );
§5.2 创建对象
3. 初始化对象 初始化对象是指由一个类生成一个对象时,
为这个对象确定初始状态,即为它的数据成
员赋初始值的过程,当然,它主要由一些赋 值语句组成。由于初始化操作是最常用的操 作之一,为简化这一过程,Java还提供了专用 的方法来完成它,这个方法被称为构造方法。
Deparment类使用它,最简单的办法是把这两个类放在同 一个程序中,或者把ManagerEmployee类定义为公共类以 保证它能被Deparment类使用。
§5.1 Java 类定义
类属性的使用:
在类内用到该类的某个属性时,可以通过该 属性名直接引用,如: deptNo++;
如果需要使用其他类的对象的属性,则需冠 以这个对象的名称,例如在Deparment类如果 要把部门主管的雇员编号加1,需要用如下的 语句: deptMgr.empNo++; 这里的“.”代表了从属关系, deptMgr.empNo 代表了对象deptMgr的属性empNo
§5.1 Java 类定义
接口名
接口名跟在implements关键字后面,用来 说明当前类中实现了哪个接口定义的功能和 方法。 接口是Java语言用来实现多重继承的一种 特殊机制,通过声明接口可以增强类的处理 功能。
§5.1 Java 类定义
修饰符
类的修饰符用来说明类的特殊性质,分为以
下三种:
§5.1 Java 类定义
类的方法(又称为成员函数)
用来规定类属性上的操作,实现类的内部 功能的机制,同时也是类与外界进行交互的 重要窗口。Java中声明类方法的语法如下:
[修饰符] 返回值类型 方法名(参数表) { 局部变量声明; 语句序列;
}
§5.1 Java 类定义
类方法的修饰符: public等访问控制
通过定义继承关系,子类可以获得父类的 所有属性和方法。
例如:class Manager extends Employee
§5.1 Java 类定义
例如:class Manager extends Employee { 子类名 父类名 。。。。。。 } 使用继承可以大大减少代码量,提高软 件的开发效率。
§5.1 Java 类定义
类属性的修饰符有: 访问控制符 public等 静态修饰符 static 最终修饰符 final
易失修饰符 volatile
过渡修饰符 transient 以上修饰符只有访问控制符是一组,其他修饰符都 只有一个。一个类属性可以被两个以上的修饰符同时 修饰,但有的修饰符是不能定义在一起的。
static:
final:
类方法,可通过类名直接调用
方法不能被重写
abstract: 抽象方法,没有方法体 native: 集成其它语言的代码 synchronized: 控制多个并发线程的访问
§5.1 Java 类定义
成员方法(参数传递) 例: public class PassTest { float ptValue; public static void main(String args[]) { int val; PassTest pt=new PassTest(); val=11; System.out.println(“Original Int Value is:”+val);
§5.1 Java 类定义
类声明(类头)中可同时给出以下信 息来说明这个新建类的特殊性质:
1、父类名
2、接口名
3、修饰符
§5.1 Java 类定义
父类名
跟在extends关键字后面,用来说明当前类 是已经存在的哪个类的子类。
这个已经存在的类可以是:Java类库中定 义的类,也可以是同一个程序或其他程序中 已定义好的类。
§5.1 Java 类定义
运行结果 c:\>java VariableTest **before init** x=0 y=0 z=0 ** in init ** x=20 y=30 z=5 **after init** x=20 y=30 z=0
§5.2 创建对象
对象的生命周期 创建 使用 清除
例如:object_one=new class_name( );
object_two=new class_name( );
§5.2 创建对象
也可以在声明对象的同时建立对象,这称为 创建一个对象。创建对象的格式如下:
类名 对象名=new 构造方法( );
例如:
class_name object_one=new class_name( );
分隔。声明对象的作用是为将来的编译过程
提供必要的信息。例如: class_name object_one,object_two; 这个语句声明了两个对象object_one, object_two,它们都是class_name类的对象。
§5.2 创建对象
2.建立对象 所谓建立对象,实际上就是用Java提供的new关键 字为对象分配存储空间。在声明对象时,只确定了对 象的名称和它所属的类,并没有为对象分配存储空间, 此时对象还不是类的实例。只有通过建立对象这一步, 才为对象分配内存,使该对象成为类的实例。建立对 象的格式如下: 对象名=new 构造方法( );
第五章 Java面向对象编程基础
§5.1 定义类 §5.2 创建对象 §5.3 构造函数 §5.4 访问控制修饰符 §5.5 静态属性、静态方法 §5.6 抽象类与抽象方法 §5.7 最终类、最终属性、最终方法
§5.1 Java 类定义
包括类头和类体 一般语法格式如下:
[修饰符] class 类名 [extends 父类] [implements 接口名] { 类成员变量声明; 类方法声明; }
变量的类型是简单数据类型,如: int 、double 、char等。
§5.1 Java 类定义
Java中声明类属性为对象的语法如下:
[修饰符] 类名 对象名 [=new 类名(实参表)];
其中类名是另一个类的名称,体现类与类
的相互关系,即一个类内部可以包含另一个
类的对象。
类中包含其他类的对象时,可以在声明这 个对象时创建它,也可以仅仅声明这个对象, 在类的相关方法中在创建它。
pt.changeInt(val); System.out.println(“Int Value after Change is:” +va pt.ptValue=101f; System.out.println(“Original ptValue is:”+pt.ptValue pt.changeObjValue(pt); System.out.println(“ptValue after Change is:”+pt.ptV } public void changeInt(int value) { ptValue=55; } public void changeObjValue(PassTest ref) { ref.ptValue=99f; }
§5.2 创建对象
使用对象 当一个对象被创建后,这个对象就拥有了 自己的数据成员和成员方法,我们可以通过 引用对象的成员来使用对象,对象的数据成 员的引用方式如下:
对象名.数据成员名;
对象的成员方法的引用方式如下:
对象名.成员方法名(参数表) ;