当前位置:文档之家› 第三章 面向对象编程

第三章 面向对象编程


实 例 验 证 … …
不 同 包 子 类
package accessdemo.otherpack; import accessdemo.SuperClass; public class OtherPackSubClass extends SuperClass { public static void main(String args[]) { OtherPackSubClass s1=new OtherPackSubClass(); s1.testPublic(); s1.testProtected(); s1.testFriendly(); s1.testPrivate(); } }
15
面向对象的应用举例(2)
程序ObjectOperating.java :
public class ObjectOperating { public static void main(String args[]) { BirthDate b = new BirthDate(); b.setDay(25); b.setMonth(12); b.setYear(2003); b.day = 2; b.year = 2003; b.show(); } }
5
封装的实体=数据+方 法 数据或变量

方法
抽 象
实 例 化 属性或状态
对象
操作或行为
创建类
class name { type variable1; … type variableN;
在类中,属性是通过成员变 量体现的,而操作是用成员 函数(又称为方法)实现的。
Java中定义类的通用格式:符
Java中共有四种访问修饰符:
1、public :完全公开,没有类或包的限制
2、protected:强调继承关系,没有包的限制
3、default:有包的限制,没有类的限制,对于同一包
中的类来说,相当于public修饰符。也可叫做package private 4、private:有包的限制,同时也有类的限制,只能被 同一个类中的成员函数或内部类访问。
10
默认的构造方法(1)


Java语言中,每个类都至少有一个构造方法;
如果类的定义者没有显式的定义任何构造方法, 系统将自动提供一个默认的构造方法:
– 默认构造方法没有参数
– 默认构造方法没有方法体

Java类中,一旦类的定义者显式定义了一个或多 个构造方法,系统将不再提供默认的构造方法;
11
默认的构造方法(2)
实 例 验 证 … …
同 一 包 不 同 类
20
package accessdemo; import accessdemo.SuperClass; public class SamePackOtherClass { public static void main(String args[]) { SuperClass s=new SuperClass(); s.testPublic(); s.testProtected(); s.testFriendly(); s.testPrivate(); } }
• 举例:
public void setdate(int day, int month, int year){ day=23; month=7; year=2003; }
9
构造方法
• 构造函数名称与类名称相同 • 构造函数没有返回类型 • 其任务是在创建对象时初始化其内部状态
class Fruit { boolean seedLess; boolean seasonal; float price; Fruit(boolean seed, boolean season, float p) { seedLess = seed; seasonal = season; price = p; } }
package accessdemo; public class SuperClass { public void testPublic( ) {System.out.println("a public method in superclass");} protected void testProtected( ) {System.out.println("a protected method in superclass");} void testFriendly( ) {System.out.println("a friendly method in superclass");} private void testPrivate( ) {System.out.println("a private method in superclass");} public static void main( String args[ ] ) { SuperClass sc=new SuperClass( ); sc.testPublic( ); sc.testProtected( ); sc.testFriendly( ); sc.testPrivate( ); } }
• 使用下列语法可创建对象: • 关键字 new 通常称为创建运算符,用于分 配对象内存,并将该内存初始化为缺省值。 • 一旦 new 完成分配和初始化内存,它就将 调用构造函数来执行对象初始化。
class FruitDemo { public static void main(String args[]){ Fruit f = new Fruit(true,false,50.0F); } 创建对象 }
实 例 验 证 … …
同 一 包 子 类
21
package accessdemo; import accessdemo.SuperClass; public class SamePackSubClass extends SuperClass { public static void main(String args[ ]) { SamePackSubClass s1=new SamePackSubClass( ); s1.testPublic( ); s1.testProtected( ); s1.testFriendly( ); s1.testPrivate( ); } }
}
应用举例:public class Test{
public static void main(String args[]){ Person d = new Person() ; d.setAge(120); }
}
12
创建对象
new 构造函数
当创建一个类时,只是 创建了一种新的数据类 型。对象是类的一个实 例。
2
面向对象的思想概述
1. 面向对象的编程思想力图使对计算机 语言中对事物的的描述与现实世界中 该事物的本来面目尽可能的一致。
2. 类(class)和对象(object)是面向对象 方法的核心概念。类是对一类事物描 述,是抽象的、概念上的定义;对象 是实际存在的该类事物的每个个体, 因而也称实例(instance)。
22
实 例 验 证 … …
不 同 包 不 同 类
23
package accessdemo.otherpack; import accessdemo.SuperClass; public class OtherPackOtherClass { public static void main(String args[]) { SuperClass s=new SuperClass( ); s.testPublic(); s.testProtected(); s.testFriendly(); s.testPrivate(); } }
13
练习
分析并编译、运行下面的源文件,体会类的定义、对象的创建、 对象成员方法的调用、类的定义和应用程序在源文件结构上的不 同;
//源文件A.java
//源文件Test.java
public class A { public void m1() { System.out.println("hi"); } } public class Test { public static void main(String[] args) { A hello=new A(); hello.m1(); } }
type methodname1(parameter-list){ //方法体 } … type methodnameN(parameter-list){ //方法体 } }
6
成员方法 (对象行为 或操作)
类和对象举例
定义一个类:
class Person { int age; int getAge() { return age; } void setAge(int i){ age = i; } }
第三章
面向对象的编程
类设计
本章知识要点: 定义继承、多态、重载、覆盖和虚拟方法调用 使用访问修饰符protected和“友元包” 描述构造器和方法重载的概念 描述完整的对象构造和初始化操作 在java程序中识别下列内容
重载方法和构造器 使用this来调用重载的构造器 覆盖方法 调用超类方法 父类构造器 调用父类构造器
14
面向对象的应用举例(1)
程序BirthDate.java :
public class BirthDate { private int day; private int month; public int year; public void setDay(int d) { day = d; } public void setMonth(int m) { month = m; } public void setYear(int y) { year = y; } public int getDay() { return day; } public int getMonth() { return month; } public int getYear() { return year;} public void show(){ System.out.println(day + "-" + month + "-" + year); } }
相关主题