Java:类与对象

面向对象与面向过程

面向过程:执行者 费时间 费精力 结果不一定理想

面向对象:指挥者 省时间 省精力 结果比较理想

面向过程与面向对象他们之间并不是互斥的关系,面向对象基于面向过程

广义对象:但凡存在与现实生活的事物 都可以称之为对象(事物)

广义类:将那些具有相同属性和功能的对象进行的统称/分类

狭义对象:就是是指由某一个类所描述出来的具体的事物

狭义类:将那些具有相同属性和功能的对象进行的统称/分类

图纸是类,楼是对象。纸对于图纸来言是类。

Object String 是类

new String()对象

Class 字节码类,Class是Java中对字节码的统称

在现实生活中先有对象后有类

在计算机中先有类后有对象

我们在面向对象编程中,一般是先定义类,再定义对象

如何创建一个类?

封装:将独立单元或者多个数据进行整体的封装,目的在于重复利用和操作方面

不需要过多在乎封装的内容,我们只需要调用即可,底层对于调用者而言是透明的。

(1)循环:将重复执行的代码进行封装到循环语句中

(2)函数:将具有独立功能的代码进行封装到函数中

(3)数组:将多个同类型的数据进行封装到数组中(数据类型一样,空间连续,操作相同)

(4)类:将具有相同属性和行为的对象进行统一的封装

我们在描述类的时候,主要描述的就是属性和行为

类-C语言结构体

C语言中结构体 :将多个数据进行的封装(数据类型不一定一样,空间也不一定连续,操作不一定一样)

struct Node{
      int e;
      Node *next;
}

C语言中属性和行为是分开的

在Java中如何定义一个坐标数据?

int [] point = {3,4};
int [][] points = {{3,4},{5,7},{1,2}};

计算两个坐标之间的距离

public static double distance(int[] p1,int[] p2){...}

将属性和行为进行封装

例如:ikun.身高

ikun.rap()

更加符合仿生仿真,更加拟人化。

Java类当中属性和行为是结合在一块的

语法

权限修饰符 类型 class 类名{

//属性- 用变量/常量表示

//行为- 用函数

(对类的描述和定义)

      构造代码块

      静态代码块

      成员变量/实例变量

      静态变量

      构造函数/构造器

      成员函数/实例函数

      静态函数

       继承而来的函数

       修改器

       访问器

}

注意事项:

定义一个坐标这个类
//在Java中 尽量一个.java文件中包含一个类
//并且类名和文件名必须一致
//和文件名同名的类必须是public类型
//并不是每一个类都可以运行的 主要看该类中是否存在主函数!
Point一般是不需要运行的。
Point这个类,主要用于描述事物——实体类
一般负责运行的类 都有主函数——主类



成员变量:实例变量,是对象的特有属性
        每个对象都应该具有这些属性
        并且每个对象该属性的值不一定一样
语法:权限修饰符 数据类型 变量名 = 值;
成员变量是具有默认初始化的
    int 0
    double 0.0
    boolean false
    Object null
成员变量是具有显式初始化的
        (大家出来都一样,都是类中写明的值)
成员变量的初始化流程:先默认再显式。
默认和显式都是在创建对象的过程中进行的!!

 任何事物的属性和行为并不都是要对外开放的,要看情况而定
建议属性不要对外界开放
    外界不仅可以访问对象的属性,同时也可以修改对象的属性
    尤其在修改的时候,可能会产生一些业务逻辑的问题
    Person p = new Person();
    p.age = -10;     //代码逻辑没问题 业务逻辑有问题
    得将属性进行封装-私有化-private
    私有化之后,外界看不到私有的内容
    私有化最大的目的 其实在于不想让外界随意的修改对象的属性
    私有化之后就不能进行正常的访问了
    外界只提供修改的建议
       设置 属性修改器——成员函数  setAge()
    同时为了避免正常访问被限制,需要提供另外一个思路去向执行外界
       设置 属性访问器——成员函数  setAge()
    一般建议属性都是需要私有化的,除非个别属性需要向外界访问
    对于访问器:就看后续外界需不需要访问这些属性
    对于修改器:就看后续外界需不需要修改这些属性
    成员变量与局部变量的区别?
       生命周期
          成员变量 随着对象的创建而诞生,随着对象的消亡而消失
          局部变量 随着函数的进栈而诞生,随着函数的弹栈而消失
       存储位置
          成员变量 存储在堆内存中 某一个对象的空间里
          局部变量 存储在栈内存中 某一个函数的空间里
       初始化
          成员变量 有默认初始化 - 显式初始化
          局部变量 必须先初始化 再调用
       调用范围
          成员变量 在类中全局
          局部变量 只能在函数内部

成员函数:实例函数,对象的特有行为
        每个对象都应该具有的行为
        这个行为每个对象的流程都是一样的
语法格式:权限修饰符 返回值类型 函数名(参数列表){
       函数体
}
  注意:没有static的!
  函数中的参数 实际上是该函数的局部变量(在函数内部创建的变量)
  局部变量与成员变量重名,一般用this关键字进行区分
  this含义为 当前对象的
 */
//计算当前点到别的点之间的距离

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值