面向对象

    科技2022-07-13  133

    面向对象

    1.面向对象概述1.1面向过程:1.2面向对象 2.类3.对象在内存中的结构4.局部变量和成员变量5.封装this关键字 6.构造器7.类方法类属性

    1.面向对象概述

    1.1面向过程:

    面向过程是分析解决问题需要的步骤,然后我们用函数来一步一步的调用实现。 例如1:把大象放进冰箱 1.打开冰箱 2.放入大象 3.关闭冰箱 例如2:做五子棋的游戏开发 1.开始 2.白子先走 3.绘制棋盘 4.判断输赢 5.黑子再走 6.绘制棋盘 7.判断输赢 ............

    1.2面向对象

    面向对象(OOP)编程就是把具有一类固定属性和行为的事物抽取出来。 对于第一个例子: 冰箱:行为有(开冰箱、关闭冰箱) 大象:走路 所以面向对象后:就是 冰箱开门 大象走进冰箱 冰箱关门 对于第二个例子: 棋子:走,黑子和白子 棋盘:绘制 规则:判定输赢 记住一个原则:面向对象是以功能来划分,而不是步骤。记住一个思想万物皆对象 在java体系中只有八种基本数据类型: byte、short、int、long、float、double、char、boolean不是对象其余的都是对象 也就是可以被new的都是对象 引用数据类型也就是对象有三种:类、数组、接口

    2.类

    类是一个概念,不能直接使用,必须使用这个类的具体的对象。 根据类来创建对象:类名 变量名=new 类名(); 需要特别注意的是前者存放在栈中,后者存放在堆中, 也就是变量存放在栈中它具有一个hash值,对象存放在堆中

    3.对象在内存中的结构

    实例代码

    public class Dog{ String color; double height; double weight; public String guidHome(){ return "狗在看家"; } } class TestDog{ public static void main(String[] args){ Dog dog=new Dog(); dog.color="黄色"; dog.height=50.5; dog.weight=60.0; System.out.println(dog.height+"cm高"+dog.weight+"kg重"+dog.color+"的"+dog.guidHome()); } }

    内存结构图一 内存结构图2 堆内存中的东西java的垃圾回收机制会自动回收

    4.局部变量和成员变量

    个人总结:变量分为常量和变量,变量分为局部变量和成员变量。成员变量分为对象成员变量和类成员变量。方法分为对象方法和类方法,对象成员变量不能在类方法中使用,但是类成员变量可以在对象方法中使用

    局部变量: 1.在方法中或者语句块中 2.局部变量必须初始化 3.都存储在栈中 4.生命周期:定义的时候产生, 当前的方法的括号语句块的括号执行完毕消失 成员变量(属性): 成员变量又分为对象成员变量 和类成员变量(被static关键字修饰) 1.在类中定义 2.可以不赋值但是都有默认值 3.存储在堆中 4.生命周期:随着对象的消失而消失,会被JVM的垃圾回收机制回收 (当对象没有引用的时候会被回收),匿名对象就是没有被引用的对象。 匿名对象:匿名对象是无意义的, 因为在栈中没有一个变量会对它引用很快 就会被垃圾回收机制回收掉

    5.封装

    其实就是使用private关键字把属性私有化,private的权限是只能在本类中使用, public的权限是所有类都可以访问

    this关键字

    this关键字表示当前的,它只能在对象方法中使用 this关键字的特性:代表当前类的对象,所以当哪个对象调用含有this的对象方法的时候, this就代表哪个对象,所以理解的重点就是要辨别当前的对象到底是哪个,到底是当前的对象还是当前调用这个含有this方法的对象。 另外this关键字可以理解为 new object();的简写,所以可以这么使用: this(属性,属性);这就是通过this(实参列表)可以调用本类中的构造器,必须注意的是只能在方法中的第一行 打印一个对象实际是打印它的地址(jdk提供的地址而不是内存中的真正地址,内存中真正的地址是16进制的)

    方法的执行是在栈中执行的

    6.构造器

    作用:创建对象,给对象赋值; 构造器本身也是一个方法: 没有返回值,也没有void 构造器的方法名必须和类名一致。

    7.类方法类属性

    被static关键字修饰的属性是类属性,被static关键字修饰的方法是类方法。 不被static关键字修饰的分别是对象属性和对象方法。对象属性和对象方法只能被对象使用。 类属性和类方法可以被对象使用。类属性和类方法的调用是: 类名.类属性 类名.类方法

    这儿还需要注意的是类属性在数据共享区

    Processed: 0.022, SQL: 8