第4章面向对象基础new

合集下载

第四章 面向对象编程

第四章 面向对象编程

2.2
值类型与引用类型
C/C++有指针类型,而数组、结构体、类 这些数据类型本质上都是指针。因此C/C++ 数据类型可划分为基本类型和指针类型两 大类 从 C# 类的方法参数传递我们看到,引用 实际上就是指针的改头换面 。 C# 数据类型也可划分为值类型和引用类型 两大类, 但它和C/C++有所不同, C#所有数 据类型都是对象化的, 也就是说都是类 但类也有不同, 它们在内存中的位置和引 用方法可以是不一样的
out 引用的例子
P73 例题 4-8 class Program { public static void MyMethod(out int a, out int b) { a = 5; b = 6; } //函数中赋值 static void Main() { int x, y; MyMethod( out x, out y ); //引用时无初值 Console.WriteLine ( "调用MyMethod后,x={0},y={1}", x, y); Console.ReadLine(); } }
3.3 派生类对基类方法的覆盖
覆盖:在派生类用与基类相同的方法名和参 数表写一个新方法 ,是多态性的体现。 覆盖只对派生类和派生类的派生类有效,对 基类无效 。 基类的方法必需声明为 virtual(P82 ), 表示该方法(或属性)可以被覆盖。 覆盖时派生类的方法必需声明为 override 派生类的方法名和参数表必需与基类一致 派生类用关键字 base .方法名( ),可以调用 基类被覆盖的方法。
关于构造函数(构造方法)
基本上和 Java 一样,一般声明为 public 如果没有自己声明的构造方法,系统会自动 提供一个默认构造方法对类进行初始化。 构造方法与类同名,没有返回值。 支持重载,可以声明多个构造方法。 本书中将类的属性(或成员变量)称为“字 段”,我们课中一般称为“成员变量”或 “属性”。 成员变量的默认初始化:数值类型为 0; bool 类型为 false;引用类型为 null。

第四章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章 面向对象编程
面向对象的方法解决问题的基本过程 对象 实 例 ③ 化 类 实体

面向对象程序设计第四章

面向对象程序设计第四章

4.1 抽象与封装




封装就是将数据的表现方式和对数据的操作细节隐藏 起来,用户可以通过接口对数据进行操作,而不必要 知道数据是如何表示的,怎么对数据操作的这些细节 封装是面向对象的基本特征之一 变速箱变速、汽车驱动、汽车转向等原理都被封装在 汽车内部了,提供给驾驶员的只是一个接口。驾驶员 只需要踩下油门、转动方向盘就可以上路了 我们不必要知道录音机、MP3播放器、电视机遥控器 等内部细节,只需要知道按下哪个键可以播放、停止 即可


类成员包括成员函数和数据成员两类。 包含可执行代码的成员统称为该类的成员函数。 类的成员函数包括:方法、属性、事件、索引 器、运算符和构造函数。 类的数据成员包含类要处理的数据,可以是常 量和字段。
4.3 对象
4.3.1 创建对象 使用new运算符,可以创建对象,即类的实例。对象 是一个引用类型的变量。 对象的创建形式: 类名 对象名 = new 类名(参数); Goods cloth = new Goods(10); 使用new运算符创建对象,并调用类的构造函数完成 对象的初始化工作。也可以分两步创建对象: Goods cloth ; cloth = new Goods(10);
protected
internal protected internal
定义保护成员。成员可以从定义它的类内部,以及派 生类访问
定义内部成员。成员只能从当前程序集中访问 定义内部保护成员。成员在当前程序集、定义它的类 内部和派生类访问
4.7.1 使用传统的读写方法进行封装

在程序中,可以使用传统的读写方法封装私有 数据。通常先定义私有字段,然后定义一个读 私有字段的方法和一个修改字段的方法。如果 想访问类中封装的私有数据,只能通过读写方 法完成,这样可以保证类中封装数据的完整性

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

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

说明:
关键字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( ); };

面向对象编程技术第四章

面向对象编程技术第四章
•面向对象编程技术第四章
说明:
3.保护类型与private类似,其差别表现在继承与派生时对派 生类的影响不同,在第七章介绍。
下页 例子
•面向对象编程技术第四章
class circle {
public: circle::circle(int r)
{ radius=r;
}
构造函数,后面介绍
int area()
1. 成员函数分类 (1)构造函数与析构函数
2.不能在定义时初始化赋值
(2)其他成员函数
定义成员时并不分配存储空间, 如 int hour=0
2. 在类中说明原形,在类外给 出函数体实现,并在函数名前 使用类名加以限定。也可以直 接在类中给出函数体
允许声明重载函数和带缺省形
参值的函数
建议定 义在类
•面向对象编程技术第四章
}
•面向对象编程技术第四章
时钟类的成员(数据成员与函数成员声明)
class Clock
{private:
数据成员
int Hour, Minute, Second;
public:
void SetTime(int NewH, int NewM, int
NewS); void ShowTime( ) ;
{
return (int)3.14*radius*radius;
ERROR! 不允
} void circle_prt()
许访问私数 据!如何解决?
{
cout<<"the private radius is:"<<radius<<endl;
} private:
int radius;

第四章 面向对象(上)

第四章 面向对象(上)

②构造方法时在产生对象时被Java系统自动调用的,我们不能在程序 中像调用其他方法一样去调用构造方法,但是可以在一个构造方法中调用其 他重载的构造方法,不是用构造方法,而是用this(参数列表)的形式,根 据其中的参数列表,选择相应的构造方法。 public class Person { String name; int age; public Person(String name) { =name; } public Person(String name,int age) { this(name); this.age=age; } }
2、类与对象
1)类的定义 类可以将数据和方法封装在一起,其中数据表示类的属性,方法表示类的 行为。定义类就是要定义类的属性与行为(方法)。 例子:TestPerson.java
2)对象的产生与使用
仅有设计图是无法实现汽车的功能的,只有产生了实际的汽车才行,同样 地,要实现类的属性和行为,必须创建具体的对象。要创建新的对象,需要使 用new关键字和想要创建对象的类名,如:Person p1=new Person();等号 左边以类名 Person 作为变量类型定义了一个变量 p1 ,来指向等号右边通过 new关键字创建的一个Person类的实例对象,变量p1就是对象的引用句柄, 对象的引用句柄是在栈中分配的一个变量,对象本身是在堆中分配的。 例子:TestPerson.java
知识点
1.面向对象的概念 2.类与对象 3.方法与方法的重载 4.构造方法 5.This引用句柄 6.垃圾回收 7.Static关键字 8.包 9.继承
1、面向对象的概念
1)面向过程 在早期出现的编程语言中,如C语言,要用来定义一个复杂的数据 类型,譬如 Windows 窗口时,可以用结构体来实现,只要在结构体 中使用那些基本的数据类型来定义窗口的大小、位置、颜色、背景等 属性就可以了。如果要对一个 Windows窗口进行各种操作,如隐藏 窗口、移动窗口、最小化窗口等,就要为每个操作都定义一个函数, 这 些 函 数 与 窗 口 本 身 的 定 义 没 有 任 何 关 系 , 如 HideWindow 、 MoveWindow、MinimizeWindow,这些函数都需要接收一个参数, 即要操作的窗口。这是一种谓语与宾语的关系,“隐藏”、“移动” 等都是谓语,“窗口”是宾语。程序重心集中在函数(即谓语)上。

《Java基础入门》课后题答案

《Java基础入门》课后题答案

《Java基‎础入门》习题答案第1章Java开‎发入门一、填空题1、Java EE、Java SE、Java ME2、JRE3、javac‎4、bin5、path、class‎p ath二、选择题1、ABCD2、C3、D4、B5、B三、简答题1、面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。

2、JRE(Java Runti‎m e Envir‎o nmen‎t,Java运‎行时环境),它相当于操‎作系统部分‎,提供了Ja‎v a程序运‎行时所需要‎的基本条件‎和许多Ja‎v a基础类‎,例如,IO类、GUI控件‎类、网络类等。

JRE是提‎供给普通用‎户使用的,如果你只想‎运行别人开‎发好的Ja‎v a程序,那么,你的计算机‎上必须且只‎需安装JR‎E。

JDK(Java Devel‎o pmen‎t Kit,Java开‎发工具包),它包含编译‎工具、解释工具、文档制作工‎具、打包工具多‎种与开发相‎关的工具,是提供给J‎a va开发‎人员使用的‎。

初学者学习‎和使用Ja‎v a语言时‎,首先必须下‎载和安装J‎D K。

JDK中已‎经包含了J‎R E部分,初学者安装‎J DK后不‎必再去下载‎和安装JR‎E了。

四、编程题publi‎c class‎Hello‎W orld‎{publi‎c stati‎c void main(Strin‎g[] args) {Syste‎m.out.print‎ln("这是第一个‎J ava程‎序!");}}第2章Java编‎程基础一、填空题1、class‎2、true和‎false‎3、单行注释、多行注释、文档注释4、基本数据类‎型、引用数据类‎型5、1、2、4、86、& && | ||7、08、59、3410、56二、判断题1、错2、对3、错4、对5、错三、选择题1、AD2、AD3、C4、ABCD5、C 6 、A 7、AC 8、A 9、B 10、A四、程序分析题‎1、编译不通过‎。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章
C# 面向对象程序设计基础
1
LOGO
知识回顾
数组 一维数组
声明 初始化 Array类的 Length属性、Sort()方法、BinarySearch()方法
二维数组
声明 初始化
枚举

2
枚举的声明 枚举的使用 结构的声明 结构成员的访问 实例成员的访问 静态成员的访问
常量、字段和属性
常量 字段
属性
get() :获取字段值 static void Main(string[] args) { set() :使用value关键获取用户的输入并设置字段的值
Student s = new Student();//创建对象 s.Age = 20; //设置属性值 Console.WriteLine(s.Age);//获取属性值 Console.WriteLine(s.Department); Console.ReadLine(); }
15
作者:郭国弟
构造方法4-参数化构造方法
public static void Main(string[] args) {// 无参构造方法 // 默认构造方法 // 调用无参构造方法 public Employee() public Employee() { Employee objGraduate = new Employee(); { //_qualification = “研究生"; 调用参数化构造方法 } } Employee objMBA = new Employee(“ACCPS3“, ”张亮影“, „男', 5500); Console.WriteLine(“默认构造方法输出: \n资格=“ + objGraduate._qualification); Console.WriteLine(“\n参数化构造方法输出: // 参数化构造方法+objMBA._qualification); \n资格= " public Employee(string strQualification, string strName, } char gender, uint empSalary) { _qualification = strQualification; _name = strName; _gender = gender; _salary = empSalary; }
14
}
作者:郭国弟
构造方法3-参数化构造方法
语法:
[访问修饰符] <类名> ([参数列表])
{ // 构造方法的主体 } 示例: … // 参数化构造方法 Employee(string strQualification) { _qualification = strQualification; } …
13
作者:郭国弟
构造方法 2
class Employee { private string _name; private char _gender; private string _qualification; private uint _salary; // 无参构造方法 public Employee() { _qualification = “研究生"; } static void Main(string[] args) { // 调用无参构造方法 Employee objEmployee = new Employee(); Console.WriteLine(“资格= " + objEmployee._qualification); Console.WriteLine(“薪水= " + objEmployee._salary); } 演示:示例 1
作者:郭国弟
结构
新课讲授
第4章
C#面向对象程序设计基础
3
程序的设计思想
面向过 程
面向 对象
4
面向对象的基本概念
类的概念
对象的概念
5
面向对象的基本特征
抽象 封装 继承
多态
重载
7
类的定义
格式:
[修饰符] class 类名 [:父类名] { // 类的主体 } 说明:
① 类的定义包括类的声明和类的主体; ② Class是定义类的关键字; ③ 类名要符合标识符的定义及C#的命名规则,类名的首字母 一般大写;
26
作者:郭国弟
类的成员方法——静态成员方法
静态成员方法同静态成员变量一样,又称为类方法,它只属 于类而不属于对象,只能由类调用,不能由对象调用。
静态方法一般都是用来操作静态变量的,用来存储和调用类 共有的信息和方法,这样可以减少程序信息的冗余。
27
作者:郭国弟
28
作者:郭国弟
方法
对象的行为
9
作者:郭国弟
类的修饰符1
访问 修饰符
public
说明
所属类的成员以及非所属类的成员都可以访问
【公有成员】
internal
private protected
当前程序集可以访问,类的默认类型
只有所属类的成员才能访问 成员的默认类型
【内部成员】
【私有成员】 【保护成员】
所属类或派生自所属类的类型可以访问
访问成员变量 步骤 1:创建一个类的对象 Employee objEmployee = new Employee(); 步骤 2:使用点号访问成员变量 objEmployee._name = “张三"; objEmployee._name = 'M';
21
作者:郭国弟
类的成员
类的成员
成员变量
成员方法
类 修饰符
abstract new sealed
说明
表示此类为抽象类,不能被实例化,只能被继承使用 用于声明嵌套的类 表示该类不能被继承
10
作者:郭国弟
类的修饰符2
Teacher 类
private 成员 protected 成员 public 成员
Student 类
不可访问 不可访问 可以访问
internal 成员
24
作者:郭国弟
课堂练习
模拟设计label标签组件,假定该组件有name常量、text字 段和text属性、visual字段(默认值为false)和visual属性等属 性,编程实现。
例4-4,体会静态属性的应用。
25
作者:郭国弟
类的成员方法——参数传递
值传递
引用传递(地址传递) ref out
16
作者:郭国弟
析构方法
是用于执行清除操作的特殊方法
语法:
~ 类名()
{ // 析构方法的主体
} 示例:
… ~Employee() { } …
17
作者:郭国弟
析构方法的说明
只有类才能有析构方法,且只能有一个; 析构方法的名称必须与类名称一致,并且名称前要加~; 不能有任何返回值; 不能使用public 和 private 修饰。
31
作者:郭国弟
调用方法 3-1
语法 对象名.方法名([参数列表]);
实例 点号 类中的方法
32
作者:郭国弟
[STAThread] private void Accept() public static void Main(string[] args) { { Console.WriteLine(“请输入实数部分"); ComplexNumber objNumber1 = new ComplexNumber(); _real = int.Parse(Console.ReadLine()); ComplexNumber objNumber2 = new ComplexNumber(); Console.WriteLine(“请输入虚数部分"); objNumber1.Accept(); _imaginary = int.Parse(Console.ReadLine()); objNumber2.Accept(); } ComplexNumber objTemp 接收实部和虚部的值 = objNumber1.Add(objNumber2); objTemp.ShowResult(); void ShowResult() } { Console.WriteLine(“相加之和为:"); Console.WriteLine(_real + "+" + _imaginary + "i"); }
常量
字段
类型
索引器 方法
属性
事件
构造 与 析构 方法
22
作者:郭国弟
类成员的作用域
访问修饰符 访问修饰符
public private
使用范围
应用于类和类的成员 应用于类的成员和嵌套类
说明
可以在任何地方调用 只能在类内部调用
internal
protected
应用于类和类的成员
应用于类的成员和嵌套类
可以在一个程序集内调用
30
作者:郭国弟
声明方法 2-2
….. class Point { int x; int y; 方法 Assign() 的定义 void Assign() { System.Console.WriteLine(“输入点的值"); x = int.Parse(System.Console.ReadLine()); y = int.Parse(System.Console.ReadLine()); } } ….. Assign( ) 方法 • 不返回任何值 (void) • 不接收任何值 (Assign())
相关文档
最新文档