面向对象01

面向对象

百度解释:面向对象(Object Oriented)是软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式.

1.1 概述

与面向过程对比理解:
面向过程: 侧重分步骤
假设充话费,面向过程思想是,打开支付宝,绑定银行卡,点击充值,输入手机号,点击充值.

面向对象:侧重分类/模块
跟对象说,我要充话费,对象帮你冲

1.2构造方法

1.语法: [权限控制修饰符] 类名(参数列表){方法体}
2.作用: a.创建当前类的实例化对象,初始化成员属性
b. 初始化:赋值
3.静态变量的初始化: 在类加载阶段初始化(main方法执行之前)
4.如果不定义构造方法的话,JVM会默认帮我们创建一个公共的无参构造
5.如果我们定义了构造方法的话,不管我们定义的是有参还是无参,那么JVM都不会再帮我们默认创建无参构造
6.构造方法默认是 : 公共的, 静态的,没有返回值, 方法名和类名相同
例如:public 类名(){}
注意:

  1. 在我们声明构造方法的时候,不能加 static, 因为构造方法有双重性.
    2.如果只是静态方法,里面就不能操作成员变量,也不能进行成员变量的初始化赋值
    3.如果 只是成员方法,那么就没有办法创建对象了,因为想要创建对象必须调用构造方法,而构造方法如果是成员的,想要调用成员方法必须先有对象
    4.所以构造方法比较特殊, 构造方法 具有双重性,我们再声明的时候 不可以加static
    学习代码:
    public class _01_Constructor {
    static int i = 2;

    public static void main(String[] args) {
    System.out.println(_01_Constructor.i);
    // 如果我们直接写变量名,编译器会自动帮我们加上类名
    System.out.println(i);

     // 没有任何构造方法
     // new 后面就是构造方法(默认的无参构造)
      _01_Constructor s1 = new _01_Constructor();
     
     // 调用自己创建的有参构造
     _01_Constructor s = new _01_Constructor(2);
    

    }
    // 创建构造方法之后,默认的无参构造就没了
    public _01_Constructor(int i){

    }
    public _01_Constructor(){

    }
    public _01_Constructor(double i){

    }
    }

1.3类和对象

对象:
1 代码角度 : new 的一个实例,封装了特有的数据
2 数据角度 : 封装数据和逻辑的一种方式
3 现实角度 : 对象就是某一个具体的东西,一切皆对象
4 设计角度 : 从一个实际的实体中抽象出来某些属性的一种实体表示
*
类 :

  •  概念 : 我们再思想上对某个事物/东西/某一类东西的唯一性标识
    
  •  	是我们人,在思想上对某个事情/事物的一个界定(定义)
    
  •  	是我们大脑对客观事物描述的一个标准,一个模板
    
  •  我们再抽离某个概念,就能建立相关事物的类,一定通过他的数学来形成这个概念,通过这些属性来形成这个类
    
  •  然后通过不同的属性值,形成了实体,就是那个具体的对象
    
  •  通过不同的属性,划分不同的类,通过不同的属性值,划分不同的个体
    
  •  属性分为两种 : 
    
  •  		1 静态属性 : 类的行为和功能
    
  •  		2 动态属性 : 类对象的行为和功能
    
  • 但是在代码角度来说,类和对象都是保存数据的一种手段

1.4实例化

实例化:
类 变量 = new 构造方法(参数)

  • 1 加载类到静态区
    
  •  2 调用构造方法(栈内存压栈,开辟栈帧),在堆内存开辟内存空间
    
  •  3 把对应类中的成员属性复制到堆内存中
    
  •  4 再把堆内存内存地址赋值给栈内存遍历
    

例如:
示意图

1.5 对象的使用

1.创建对象 类 变量 = new 构造方法(参数)
例如 Student stu = new Student();
创建了一个Student对象, 创建一个Student引用类型变量 取名字为stu,保存的是堆内存对象的内存地址
2.设置属性值:stu.属性=""可以设置stu的属性值
3.获取stu的属性值可以stu打点调用
4. 注意: 没有设置值的变量都有默认值
整数为0 小数为0.0 布尔为false 字符\u0000 引用为null
Student stu2 = new Student();

1.6类的构成

  • 类 : 根据具体的事物/需求 抽象出来的属性特征,那么 类中都可以有什么呢?(java死规定)
  • 1 main : 入口方法,只要该类不是用来作为启动类的,就可以没有
  • 2 成员变量 : 每个对象共有的属性,属性值可以相同也可以不同
  • 3 静态变量 : 每个对象共有的属性和值(保存在方法区)
  • 4 局部变量
  • 5 成员方法
  • 6 静态方法
  • 7 构造方法
  • 8 抽象方法
  • 9 静态语句块
  • 10 动态语句块
  • 11 this
  • 12 super
  • 类中只能出现这些,但是类中的一切都不是必须的,也可以什么都不写,但是如果写的话只能写这些
  • 类库端 : 就是被调用的
  • 客户端 : 就调用别人的

1.7Bean

  • javaBean
  •  成员变量私有化
    
  •  有对应的getter/setter方法
    
  •  对应的构造方法
    

1.8 常见异常

  • java.lang.NullPointerException :
  •  空指针异常,是运行时异常
    
  •  当使用null值(空的引用) 去访问成员属性的时候,就会出现空指针异常
    

在这里插入图片描述

补充

  • JVM特性 :
  •  跨平台,面向对象,多线程,垃圾自动回收机制
    
  • 垃圾 : 如果没有更多的引用指向这个对象,该对象被视为垃圾数据,等待被回收

面向对象三大特性:封装,继承,多态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值