美文网首页
Java学习day-07:面向对象

Java学习day-07:面向对象

作者: 开源oo柒 | 来源:发表于2019-07-15 23:08 被阅读0次

    一、面向过程和面向对象

    1.面向对象与面向过程的区别:

    面向对象具有三大特征;封装,继承,多态;面向对象与面向过程相辅相成; 面向对象思想更契合人的思维模式。我们首先思考的是“怎么设计这个事物?”

    面向过程适合简单,不需要协作的事务。

    2.面向对象思考方式:

    遇到复杂问题,先从问题中找名词,然后确立这些名词哪些可以作为类,再根据问题需求确定的类的属性和方法,确定类之间的关系。

    3.面向对象和面向过程的总结:

    (1)都是解决问题的思维方式,都是代码组织的方式。

    (2)解决简单问题可以使用面向过程

    (3)解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程。

    二、对象的创建,方法和属性的调用

    1.对象

    (1)对象是一种数据结构,将数据和数据放在一起。内存上,对象就是一个内存块,存放了相关数据集合。

    (2)对象是具体的事物,类是对象的抽象;(抽出相似的东西)

      (3)对象的创建,new关键字;类名  对象名=new 类名();

    2.类

    (1)类可以看成一类对象的模板,对象可以看成该类的一个具体实例。

    (2)类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共同的属性、方法。

    例如:天使的特征;1.带翅膀,2.女孩,3.善良,4.头上有光环。

    3.类的定义方式

    对于一个类来说,一般有三种常见的成员:属性field、方法method、构造器constructor。(可以定义多个或0个)

    4.注意:

    一个源文件里面必须要有一个public class且只能有有一个,并且类名和文件名保持一致;

    代码截图 代码截图 结果

    5.属性

          属性用于定义该类或该类对象包含的数据或者说静态特征。属性作用范围是整个类体;在定义成员变量时可以对其初始化,如果不初始化,java会默认初始化。

    6.方法

    (1) 方法用于定义该类或该类实例的行为特征和功能实现。
    [修饰符]  方法返回值类型  方法名(形参列表) {

        // n条语句

    }

    代码截图 结果

    三、构造方法

    1.构造器也叫构造方法(constructor),用于对象的初始化。

    声明格式:

    [修饰符] 类名(形参列表){

        //n条语句

    }

    (1)通过new关键字调用!!

    (2) 构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造器里使用return返回某个值。

    (3)如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加。

    (5) 构造器的方法名必须和类名一致。

    代码截图 结果

    四、JVM内存结构

    Java虚拟机的内存可以分为三个区域:栈stack、堆heap、方法区method area。

    1.栈的特点:

    (1)栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)。

    (2) JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)。

    (3)属于线程私有,不能实现线程间的共享;

    (4)栈的存储特性是“先进后出,后进先出”

    (5)栈是由系统自动分配,速度快!栈是一个连续的内存空间。

    2.堆的特点:

    (1)堆用于存储创建好的对象和数组(数组也是对象);

    (2)JVM只有一个堆,被所有线程共享;

    (3)堆是一个不连续的内存空间,分配灵活,速度慢。

    3.方法区特点:

    (1)JVM只有一个方法区,被所有线程共享。

    (2) 方法区实际也是堆,只是用于存储类、常量相关的信息。

       (3)用来存放程序中永远是不变或唯一的内容。(类信息【Class对象】、静态变量、字符串常量等)

    4.注意:

    方法区也在堆中;

    代码截图 结果 内存分配图

    五、this关键字

    1.this的本质就是“创建好的对象地址”代表当前对象本身;

    2.this最常的用法:

    (1) 在程序中产生二义性之处;区分成员变量和局部变量,

    (2)使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于构造方法的第一句。

      (3)this不能用于static方法中;main方法中就不能使用this关键字。

    代码截图 结果

    3.构造方法的重载

    (1)构造方法重载:方法名相同;参数的类型不同;参数的个数不同;参数的顺序不同,

    代码截图 结果

    (2)this 关键字:代表当前对象本身,可以使用this区分局部变量和成员变量。

    代码截图 结果

    相关文章

      网友评论

          本文标题:Java学习day-07:面向对象

          本文链接:https://www.haomeiwen.com/subject/goaokctx.html