一、面向对象 (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); }}//运行结果:姓名:A年龄:20工资数额:4000
例 2:人开门——分析:(找名词)
- 人 {开门 (门) {门.开
- }
- }门 {开 () {操作门轴等...
- }
- } //最合适的方法应该出现在最合适的类中//门怎么开门本身最清楚,所以开这个功能应该定义在门中
三、面向对象设计思想
1、对于一个问题,首先要考虑这个问题,应该有哪些个类,哪些个对象
2、然后考虑,这些类和对象,每种类和每个对象应该具有哪些属性和方法
3、再考虑,类和类之间具备什么样的关系
四、定义类
1、所有 JAVA 程序都以类 class 为组织单元。【class 是定义类的关键字】
2、类的组成:成员变量和方法
3、定义类的步骤
· 定义类名
· 编写类的属性
· 编写类的方法
- class类名 { //定义类的属性 有什么 属性1的类型 属性1; 属性2的类型 属性2; ... //定义方法 能干什么 方法1; 方法2; ...}
例:买一个手机,首先你要想你想要的手机是什么,想像中的手机就是类。屏幕尺寸,CPU、内存等用属性表示,打电话,发短信等功能用方法来表示。
- //1.定义一个类public class Telephone { //2.声明属性,有什么 float screen;//屏幕尺寸 float cpu; float mem;//内存大小 //3.定义方法,干什么 void call() { System.out.println("打电话功能"); } void sendMessage() { System.out.println("发短信功能"); }}
五、使用对象
创建对象:
类名 对象名 = 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); }}
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: