【JAVA SE】9.类和对象
来源:互联网 发布:5钻淘宝店铺多少钱 编辑:程序博客网 时间:2024/06/08 06:45
一、面向对象(OPP)
- 面向过程:强调过程,功能的具体实现过程
- 面向对象:将功能封装进对象,强调具备了功能的对象
- 三个特征:封装,继承,多态
- 开发:就是找对象使用。没有对象,就创建一个对象,将功能封装进对象。
例:我要开车去新疆
· 面向过程:我要开车,我拉开车门,我坐在驾驶座,我过山东…
(对过程了如执掌)
· 面向对象:我命令车去新疆(车.Go),车怎么过去不关心,不用了解车整个开动的过程,车暴露出来的功能就是去哪里。
(车把自己的信息,功能封装在车这个类的内部)
二、类和对象关系
- 类:现实生活中事物的描述(描述人:姓名,年龄,性别等),映射到Java中,就是class定义的类。
- 类是具有相同属性和方法的一组对象的集合,描述对象的具体信息。
- 在一个类中,定义了该类对象所应具有的属性和方法。
- 对象:
- 每个对象都有一种类型,都是某个“类”的一个“实例”。
- 每个对象都隶属一个特定的“类”,那个类具有自己的通用特征与行为。 对象就是这类事物,实实在在存在的个体(如某一个人),对应JAVA在堆内存中用new建立的实体。
例1:职员(类)
属性(静态,特定的值):姓名、年龄、工资数额——成员变量
方法(对象能干什么,功能):显示姓名(),显示年龄(),领取工资()
根据类可以衍生出不同的对象——实例化
职员A:姓名:A,年龄:20, 工资:4000——对象(成员变量和方法的封装体)
public class Text { public static void main(String[] args){ Worker a = new Worker();//a就是Worker类类型变量——对象 a.name = "A"; a.age = 20; a.wages = 4000; a.showname(); a.showage(); a.getwages(); }}//描述职员(类)class Worker { //成员变量(属性),对象有什么 String name; int age; int wages; //方法(功能),对象能干什么 void showname() { System.out.println("姓名:"+name); } void showage(){ System.out.println("年龄:"+age); } void getwages() { System.out.println("工资数额:"+wages); }}
例2:人开门——分析
人 { 开门(门) { 门.开 }}门 { 开() { 操作门轴等 ... }}//最合适的方法应该出现在最合适的类中//门怎么开门本身最清楚,所以开这个功能应该定义在门中//识别类的简单规则是在分析问题的过程中寻找名词,而方法对应动词
三、面向对象设计思想
1、对于一个问题,首先要考虑这个问题,应该有哪些个类,哪些个对象
2、然后考虑,这些类和对象,每种类和每个对象应该具有哪些属性和方法
3、再考虑,类和类之间具备什么样的关系
四、定义类
1、所有JAVA程序都以类class为组织单元。【class是定义类的关键字】
2、类的组成:成员变量和方法
3、定义类的步骤
- 定义类名
- 编写类的属性
- 编写类的方法
class 类名 { //定义类的属性 有什么 属性1的类型 属性1; 属性2的类型 属性2; ... //定义方法 能干什么 方法1; 方法2; ...}
例3:买一个手机,首先你要想你想要的手机是什么,想像中的手机就是类。屏幕尺寸,CPU、内存等用属性表示,打电话,发短信等功能用方法来表示。
//1.定义一个类public class Telephone { //2.声明属性,有什么 float screen;//屏幕尺寸 float cpu; float mem;//内存大小 //3.定义方法,干什么 void call() { System.out.println("打电话功能"); } void sendMessage() { System.out.println("发短信功能"); }}
五、类之间的关系
- 依赖(”uses-a”):一个类的方法操纵另一个类的对象,我们就说一个类依赖于另一个类。应该尽可能将相互依赖的类减至最少(类之间耦合度最小)。
- 聚合(”has-a”):类A的对象包含类B的对象(聚集和组合)。聚集:相关性不大(足球队长是球队的一部分,篮球队长也是),组合:关系必不可分(头是人的一部分)
- 继承(”is-a”)
- 实现(implements):接口
- 多态
六、使用对象
- 创建对象: 类名 对象名 = new 类名();//位于堆内存,动态分配内存
Telephone phone = new Telephone();
- 使用对象:对象名.属性/方法
phone.mem = 4.0f;//给mem属性赋值4,float型phone.call();//调用call方法
- 注:同一类的每个对象有不同的成员变量存储空间,同一类的每个对象共享该类的方法
六、局部变量和成员变量
1、定义
- 局部变量(栈内存中)定义在方法中,临时保存数据
- 成员变量(堆内存中)定义在类中,因为对象的存在,才在内存中存在
2、作用域
- 局部变量的作用域:仅限定义它的方法或语句中
- 成员变量的作用域在定义它的整个类中
- 作用于声明的{}中,出了就没人认识了
3、初始值
- JAVA会给成员变量一个初值,不会给局部变量赋予初值
- 成员变量初值:
4、在一个方法中,不允许有同名局部变量。在不同方法中,允许有同名局部变量。
5、两类变量同名时,局部变量具有更高优先级
public class a { int a = 1; void b() { int a = 2; System.out.println(a); }}//运行结果:2
七、匿名对象
public class Text { public static void main(String[] args){ //Worker a = new Worker();有名对象 //a.name = "A"; //匿名对象,没有定义对象名 new Worker().name = "A"; //这句话执行完,把A给name后,就变成垃圾了 new Worker().age = 18; //在堆内存又生成一块区域,执行完,该内存又变成垃圾了 //所以匿名对象调用属性无意义 new Worker().showname(); //匿名对象调用方法有意义 }}class Worker { String name; int age; int wages; void showname() { System.out.println("姓名:"+name); }}//如果对一个对象进行多个成员调用,就必须给对象起个名字//匿名对象什么时候使用://1.当对对象的方法只调用一次时//2.可以将匿名对象作为实际参数进行传递public class Text { public static void main(String[] args){ //Worker a = new Worker();有名对象 //show(a); show(new Worker());//执行完堆内存区域就成垃圾了 //new Worker()作为实参传给a相当于Worker a = new Worker() } public static void show(Worker a) { a.name = "A"; a.showname(); }}class Worker { String name; void showname() { System.out.println("姓名:"+name); }}
0 0
- 【JAVA SE】9.类和对象
- java se 面向对象
- JAVA SE面向对象
- Java Se----面向对象
- Java Se----面向对象
- 【Java SE】对象的序列化和反序列化
- java SE 面向对象基础
- JAVA SE 面向对象笔记
- 【Java SE】面向对象基础
- Java SE 2.面向对象
- Java SE 自学笔记4 之面向对象的类
- 【Java SE】System类
- java se 集合类
- Java SE学习笔记-面向对象
- Java SE 学习---面向对象程序设计
- java SE基础整理(面向对象)
- Java Se----面向对象(封装、继承)
- Java Se----面向对象(多态)
- Android App开发从零开始之基础篇—四大组件(一)—Activity初体验
- iOS - 微信支付流程
- 用VS开发PHP扩展
- java 通过接口引用对象
- ionic开发——中文确认弹出框
- 【JAVA SE】9.类和对象
- 机器学习系列:(八)感知器
- JAVA缓存的实现(2)(转自其他地方)
- 引导页面的实现
- 利用JDBC连接服务器数据库(Android)
- 机器学习
- java 集合输出所有组合结果
- salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载
- Understanding LSTM Networks