面向对象基础

类和对象

概念

类是对现实生活中一类具有共同属性行为的事物的抽象(Java程序的基本组成单位)

特点

类是对象的数据类型
类是具有相同属性和行为的一组对象的集合

组成

类由属性方法组成:
属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值
方法:对象能够执行的操作行为

类的定义

pablic class 类名称{
成员属性 // (类中方法外的变量)
成员方法 //(去掉static关键字的方法)
}

属性与方法的定义
属性定义格式:
数据类型 属性名;
属性定义并赋值的格式:
数据类型 属性名 = 初始化值;
方法定义格式:
权限修饰符 返回值类型 方法名(形式参数列表){
//方法体
return 返回值;
}
例:
有一个手机类:类名(Phone)
成员变量:品牌(brand) 价格(price)
成员方法:打电话(call)

public class Phone {
    //成员变量
    String brand;
    int price;

    //成员方法
    public void call(){
        System.out.println("打电话");
    }
}

注意

  • 类必须编写在.java文件中
  • 一个.java文件中可以存在N个类,但是只能存在一个public修饰的类
  • .java文件的文件名称必须要与public修饰的类名完全一致

对象

概念

万物皆对象,客观存在的事物皆为对象,能够看得到摸得着的真实存在的实体

创建对象

格式:类名 对象名 = new 类名();
例:Phone p = new Phone();

使用对象

①使用成员变量
格式: 对象名.变量名; (可赋值)
例: p.brand;
②使用成员方法
格式: 对象名.方法名();
例: p.call();

注:对象的创建和使用时,如果是测试类必须在main方法中

类与对象的关系

  • 类表示一个共性的产物,是一个综合的特征,而对象,是一个个性的产物,是一个个体的特征。(类似生活中的图纸与实物的概念。)
  • 类必须通过对象才可以使用,对象的所有操作都在类中定义。类由属性和方法组成。

面向对象

概念

是软件开发方法,面向对象是相对于面向过程来讲的,指的是把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。

面向过程到面向对象思想层面的转变

面向过程关注的是执行过程,面向对象关注的是具备功能的对象
面向对象到面向过程,是程序员思想上从执行者到指挥者的转变。

三大思想

OOA:面向对象分析(Object Oriented Analysis)
OOD:面向对象设计(Object Oriented Design)
OOP:面向对象程序(Object Oriented Programming

三大特征

封装性:所有的内容对外部不可见
继承性:将其他的功能继承下来继续发展
多态性:方法的重载本身就是一个多态性的体现

对象内存

对象内存主要由栈内存和堆内存组成

单个对象

例:
在这里插入图片描述

多个对象

例:
在这里插入图片描述

多个对象指向相同

例:
在这里插入图片描述

成员变量和局部变量

成员变量

类中方法外的变量

局部变量

方法中的变量

区别

区别成员变量局部变量
类中位置不同类中方法外方法内或方法声明上
内存中位置不同堆内存栈内存
生命周期不同随着对象的存在而存在,随着对象的消失而消失随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同有默认初始值没有默认的初始值,必须先定义,赋值,才能使用

构造方法

构造方法是一种特殊的方法

作用

创建对象

格式

public class 类名{
修饰符 类名(参数){(修饰符一般用public)
}
}

功能

主要是完成对象数据的初始化

执行时机

在创建对象时,自动调用

注意事项

①构造方法的创建

  • 如果没有定义构造方法,系统将给出一个默认无参数构造方法
  • 如果定义了构造方法,系统将不再提供默认的构造方法

②构造方法的重载

  • 如果自定义了带参构造方法,还要使用无参构造方法,就必须再写一个无参数构造方法

③推荐的使用方式

  • 无论是否使用,都手工书写无参数构造方法
  • 当类中有非常量成员变量时,建议提供两个版本的构造方法,一个是无参构造方法,一个是全属性做参数的构造方法

匿名对象

没有名字,只能使用一次
注意:如果一个对象,我们准备使用两次或以上,那么一定要给对象创建对象名
例:

public class Demo {
    public static void main(String[] args) {
        int num = new Math().sum(100,200);
        System.out.println(num);
    }
}
class Math{
    int sum(int x,int y){
        return x+y;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值