4类和对象上
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
= "张三"; //为姓名赋值
std.age = 18;
//为年龄赋值
std.weight = 50;
//为体重赋值
std.dining();
//调用成员方法
System.out.println(std.weight);
std.walk();
System.out.println(std.weight);
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他
们就是为windows写程序,而不是为Sun的设备写程序”
——Scott McNealy(Sun首席执行官)
定义类的语法
在Java中定义类
class 类名
在C中定义结构体
struct 结构体名
{ 成员列表
//包括成员变量和成员方法
属性
• 事物的属性在类中用成员变量表示 • 不同对象的各个属性都拥有其特定的值 • 属性名称由类的所有对象共享
学生对象
姓名 年龄 住址
属性
……
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
类与结构
• 最简单的理解方式:
C
Java
结构体
类
结构体变量
对象
区别在于:结构体一般只有数据(属性)而 没有函数(方法)。
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
类
• 人们为了更好地认识世界,将现实生活中的事物(对象)划分 成类
• 同一类中的事物总是具有一些共性 • 类以共同的属性和方法定义实体 • 类是具有相同属性和方法的一组对象集合
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
在计算机程序中用相似的 实体模拟现实世界中的实体
设计和实现 软件系统的方法
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
面向对象的三大原则
封装
继承
String name; int age; float weight;
//姓名 //年龄 //体重
成员变量
/*吃饭的方法*/ void dining() {
System.out.println("吃饱了..."); weight++; }
成员方法
/*走路的方法*/ void walk() {
System.out.println("走累了..."); weight--; } }
• 函数表示自身的功能和行为,也 称作“方法”或“成员方法”。
收银员对象
姓名:布兰尼 职衔:收银员 年龄:35 体重:60千克
操作: 收款 打印帐单
状态
顾客对象
顾客 姓名:朱丽叶 年龄:28 体重:52千克
操作: 购买商品
行为
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
访问权限:public和private
• C语言中结构体的成员可以从任何地方进行访问,这将给数 据的安全留下极大的隐患
能从类的外部进行访问
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
访问权限
• 无法从类的外部访问私有成员 • 其它类的私有成员对于当前类也是隐藏的
net程序他们就是为windows写程序而不是为sun的设备写程序scottmcnealysun首席执行官访问权限续?加上访问修饰符有时候可能会给操作数据带来不便但可以在很大程度上保证数据的安全?一般地我们会将成员属性声明为private而将成员方法声明为public但这样做并不是绝对的?有时候类外部可能要操作到某些私有数据成员那么就可以增加一个公有的方法再由这个方法来操作私有数据避免因类外部的误操作而造成的数据损坏?因为main方法要由类外部的虚拟机来调用所以main方法必须声明成public如果十年前sun没有做java人们便会写
成员运算符
• 实例化类的对象之后可以访问到类中的成员(成员变量和 成员方法),但访问类中的某些成员并不一定需要实例化类 的对象
• 使用成员运算符(.)来访问成员变量或成员方法 • 一般语法是:
对象名.成员名 • 如:std.age = 18; //为成员属性赋值
std.dining(); //调用成员方法
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
本章目标
• 了解什么是面向对象 • 面向对象的基本概念
类 对象 封装 继承 多态
• 如何定义类,如何创建对象 • 成员运算符 • 访问控制权限:public和private • 构造方法
方法
• 事物的行为和动作在类中用成员方法表示
• 每个对象都有相同的动作和行为,即:每个对象共享类中的 成员方法
吃饭
学生对象
睡觉 上课
方法
……
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
• 多态的好处就是使类更灵活,更便于扩充
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
在Java中定义类
/*定义学生类*/ class Student {
类
不可从类 外部访问
私有
属性或方法
可以从类 外部访问
公有
属性或方法
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
访问权限示例
class Student { private String name; private int age; private float weight;
• 为了避免从类外部直接访问类成员而造成的数据损 坏,Java对类成员的访问制定了约束
• 关键字public和private是访问修饰符,用来说明某个成员是 否可以从类外部进行访问
• public修饰的成员可以在任何地方进行访问,不受任何约束 • private修饰的成员只能够被本类中的其它成员访问,而不
多态
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
对象
• 对象是面向对象编程的核心部 分,是实际存在的具体实体,具 有明确定义的状态和行为
• 对象其实就是“状态”和“行 为”的封装体,其中:数据表示 自身的状态,也称作“属性”或 “成员变量”
第四课
类和对象(上)
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
回顾
• Java中的数组和字符串是基本数据类型还是引用数据类型? • Java中使用哪个关键字在堆中分配内存? • Java中的数组是被分配在堆中还是栈上? • Java对象占用的内存空间需要程序员手动去释放么? • Java虚拟机在什么情况下会回收对象占用的内存空间? • Java中的数据由哪些声明方式? • 获取Java数组的长度使用哪个属性? • 使用命令行对Java程序传递参数时其控制台的参数之间使用
什么分隔符分割?
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
本课案例
• 设计人类(Person类),描述人的年龄、身高、体重和吃 饭、睡觉等行为
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
面向对象的编程思想
OOP
旨在计算机程序中 模拟现实世界中的概念
在OOP中,现实世界的 所有事物全都被视为对象
}
}
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他
们就是为windows写程序,而不是为Sun的设备写程序”
——Scott McNealy(Sun首席执行官)
创建对象的语法
• 和数组相似,对象也是引用数据类型,只能使用new 运算符从堆中分配内存,此过程称为创建对象、类 实例化或对象实例化,因此对象也称为实例
}
{
成员列表
//只有成员变量,没有成员 函数
};
习惯上,类名的首字母大写,如:Student
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
在Java中创建对象
/*Test类,用来容纳main方法*/
public class Test
{ /*main方法,程序入口*/
public static void main(String[] args)
{
Student std;
//声明Student类型的引用
std = new Student(); //创建Student类型的对象
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
ห้องสมุดไป่ตู้
继承
• 继承就是重用现有的类来生成新类的一种特征
• 通俗地讲就是从现有的类(即父类或基类)创建新 类(子类或派生类)的过程
• 创建对象的一般语法:
注意:这里要有括号
类名 引用变量名 = new 类名();
• 使用已经定义好的类,创建该类对象的过程称为 “实例化”,引用变量名又称为对象名,习惯上我 们直接称为对象(实际上是指该引用变量所指向的
堆中对象)
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
封装
• 将某些东西包装在一起,然后以新的完整形式呈现出来 • 隐藏属性、方法或实现细节的处理方式称为封装 • 封装其实就是有选择性地公开或隐藏某些信息,它解决了数据的安全性问题。
一个人类的对象 属性 方法
姓名:张三 体重:50kg …… 密码:******
走路 吃饭 ……
可以公开 无所谓 不可以公开
• 现实生活中,继承可以达到财产重用的目的,而在 Java中,继承可以使代码重用
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
多态
• 多态是指同一个类中存在相似行为的一系列不同 操作或在继承关系中相同的动作行为在不同子类 中具有的不同表现,前者表现为静态多态,即:方法 重载;后者表现为动态多态,即:方法重写(覆盖)
类和对象的区别
• 类是用来描述实体的“模板”或“原型”
• 对象是实际的实体,每一个对象都是类的一个具体实例
• 类用来定义对象所有的属性和方法,同一类的所有对象都 拥有相同的特征(成员变量)和操作(成员方法)
• 可以将类理解成生产产品的模具,而对象则是根据此模具 生产的一个个产品。
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)