day09

  1. 面向对象
    1.1 概述

面向过程 : 侧重分步骤
比如做菜
1 买菜,买各种食材,买各种调料
2 开火,烧油
3 翻炒
4 出锅

面向对象 : 侧重分类/模块
比如做菜
1 完成做菜,涉及到的事物有 : 厨师,食材,工具
2 找个厨师,交给他
3 厨师.买食材
4 厨师.使用工具做菜

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
1.2 构造方法

  • 编译器功能 : 能把我们代码编译成class文件,并且还会检查代码的语法,也会帮助我们补全不规范的代码
  • 比如调用当前类中的静态变量的时候,可以省略类名,但是编译器会帮我们加上
  • 同时如果我们类中没有构造方法,编译器也会默认帮我们创建一个公共的无参构造
  • 构造方法 :
  •  1 作用 : 创建当前类的实例化对象,初始化成员属性
    
  •  2 初始化 : 赋值
    
  •  3 静态变量什么时候初始化 : 类加载阶段(main方法执行之前)
    
  •  4 如果不定义构造方法的话,JVM会默认帮我们创建一个公共的无参构造
    
  •  5 如果我们定义了构造方法的话,不管我们定义的是有参还是无参,那么JVM都不会再帮我们默认创建无参构造
    
  •  6 构造方法默认是 : 公共的,静态的,没有返回值的,方法名和类名相同
    
  •     但是我们声明的时候 不能加static,因为构造方法具有双重性
    

public 类名(){}

  •             如果 只是静态方法,那么 里面不能操作成员变量,也就不能对成员变量初始化赋值
    

注解:静态变量和静态的方法是属于类,不属于对象,调用的时候不需要实例化(当然如果你非要实例化之后在调用也是可以的),
非静态的变量和方法是属于对象的,调用的需要先实例化,这也就是上面图片中的name报错的原因,

可以看到,静态变量可以直接调用,静态方法输入类的,可以直接通过类.方法 的方法直接使用
非静态的变量在静态的方法中需要实例化对象,即是Student student = new Student(); 实例化对象student 然后通过对象调用方法和变量

  •             如果 只是成员方法,那么就没有办法创建对象了,因为想要创建对象必须调用构造方法,而构造方法如果是成员的,想要调用成员方法必须先有对象
    
  •          所以 构造方法 具有双重性,我们再声明的时候 不可以加static
    
  •          构造方法比较特殊
    
  •   7 语法
    
  •          [权限控制修饰符]  类名(参数列表){方法体}
    

1.3 类和对象

  • 对象 :
  •  1 代码角度 : new 的一个实例,封装了特有的数据
    
  •  2 数据角度 : 封装数据和逻辑的一种方式
    
  •  3 现实角度 : 对象就是某一个具体的东西,一切皆对象
    
  •  4 设计角度 : 从一个实际的实体中抽象出来某些属性的一种实体表示
    
  • 类 :
  •  概念 : 我们再思想上对某个事物/东西/某一类东西的唯一性标识
    
  •      是我们人,在思想上对某个事情/事物的一个界定(定义)
    
  •      是我们大脑对客观事物描述的一个标准,一个模板
    
  •  我们再抽离某个概念,就能建立相关事物的类,一定通过他的数学来形成这个概念,通过这些属性来形成这个类
    
  •  然后通过不同的属性值,形成了实体,就是那个具体的对象
    
  •  通过不同的属性,划分不同的类,通过不同的属性值,划分不同的个体
    
  •  属性分为两种 :
    
  •          1 静态属性 : 类的行为和功能
    
  •          2 动态属性 : 类对象的行为和功能
    
    •        相同的属性不同的值 抽象为不同的对象,属性不一样 就是多个类 属性值不一样 就是多个对象 比如下面的stu1
      
    •        和stu的name 可以相同可以不同 是成员 而某个属性 必须要一样的 就是静态
      
    •        所有对象之间需要有共同的属性不同的值就要用成员 所有对象共同的属性共同的值就是静态
      
    • 成员变量:每个对象共有的属性属性值可以相同也可以不同 .

    • 静态变量:每个对象共有的属性和值 保存在方法去 在代码的角度

    •        类和对象都是保存数据的一种手段
      


对象的创建和使用
1)对象创建语法格式
类名 对象名 = new 类名();
示例
Student s = new Student();
2)操作对象的属性和方法
【语法格式】
使用类的属性: 对象名.属性
实用类的方法: 对象名.方法名()
1.4 实例化

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

1.5 对象使用

1.6 类的构成

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

1.7 Bean

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

1.8 常见异常

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

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

day09 面向对象相关推荐

  1. Java系列教程day09——面向对象

    day09--面向对象 提纲: 1.面向对象 2.类和对象 3.方法的重载 4.构造方法 5.this关键字 6.匿名对象 7.作业 一.面向对象 1.1.生活中什么是面向对象 洗衣服,吃饭 面向过程 ...

  2. 千锋学习day09面向对象

    面向对象 面向对象 面向对象思想(Object Oriented Programming )OOP: 一切客观存在的事物都是对象,万物皆对象 任何对象,一定具有自己的特征和行为 对象: 特征:称为属性 ...

  3. Day09 - 面向对象进阶

    在前面的章节我们已经了解了面向对象的入门知识,知道了如何定义类,如何创建对象以及如何给对象发消息.为了能够更好的使用面向对象编程思想进行程序开发,我们还需要对Python中的面向对象编程进行更为深入的 ...

  4. Day09.面向对象进阶

    面向对象进阶 文章目录 面向对象进阶 前言 一. @property装饰器 二. \_\_slots\_\_魔法 三. 静态方法和类方法 四. 类之间的关系 五. 继承和多态 六. 综合案例 案例1: ...

  5. Java day09面向对象综合训练

    面向对象综合训练-01-文字版格斗游戏 public class GameTest {public static void main(String[] args) {//1.创建第一个角色user r ...

  6. day09 面向对象编程

    1.对象关联 对象和属性是隶属关系,即对象拥有属性,属性被对象拥有 对象传递和对象关联的区别是什么? 对象传递:对象和方法之间关系松散 实参-形参 对象关联:关系紧密,一个对象拥有另外一个类的对象,目 ...

  7. day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上/下造型,main方法,抽象类,接口,设计模式,异常,内部类

    1 Day06–面向对象1 1.1 面向对象 1.1.1 概念 推荐看的书:Thinking in java 概念:所谓的面向对象是一种编程思想,通过这种思想可以把生活中的复杂事情变得简单化,从原来的 ...

  8. day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上_下造型,main方法,抽象类,接口,设计模式,异常,内部类

    1 Day06–面向对象1 1.1 面向对象 1.1.1 概念 推荐看的书:Thinking in java 概念:所谓的面向对象是一种编程思想,通过这种思想可以把生活中的复杂事情变得简单化,从原来的 ...

  9. Python九十天学习框架,从1到90,从0基础到IQ100

    每个人的基础以及学习进度都不一样,不管最后是90天学会,还是三个月,或是更久,自学按照这个来也能相对系统的学习知识,而不是零散细碎的知识最后无法整合,所以不管怎么样,学习得有个自己的框架,下面一起来看 ...

最新文章

  1. 《Python和Pygame游戏开发指南》——2.16 pygame.display.update()函数
  2. angular学习笔记(十三)
  3. asp.net linq查询环境搭建
  4. 【yolo】ubuntu18.04 yolo打开摄像头实时检测框目标 转化pth文件为onnx
  5. Java基础:int和Integer的区别
  6. Python3回文相关算法小结
  7. Docker安装Redis以及配置Redis环境
  8. 【转载】早点长大的飞秋
  9. 这是一个非常不错的mkv编辑制作的软件!
  10. 13 FI配置-财务会计-输入全局参数
  11. java script 月日年转年月日_javasrcipt日期一些方法和格式转化
  12. 大型.NET项目的目录、编译和版本管理实践 五
  13. 最新房天下登录接口(RSA)JS逆向分析
  14. Perl 字符串截取函数substr
  15. 2021mathor cup钢材制造业中钢材切割
  16. Fiddler-本机抓包模拟器
  17. python教材推荐:
  18. 三阶魔方学习(新手入门)
  19. CI/CD---使用新版云效流水线自动部署Java项目
  20. 注释工具一键添加佛祖保佑永无BUG、神兽护体等注释图案

热门文章

  1. JVM - 认识JVM规范
  2. 洛谷 P1220 关路灯(DFS)
  3. 个人HTML期末大作业~ 个人网页(HTML+CSS)6页面带下拉特效~简单带表格带设计说明 ~学生网页设计作业源码...
  4. 多用户商城系统解决方案 1
  5. 国产统信UOS引导盘制作
  6. Linux下uniq命令的详解
  7. 公元世纪记年的表示方法
  8. 【ROS】常用可视化工具汇总
  9. 感受PCA之美(Principal components analysis overview and application)
  10. 电磁兼容(EMC)设计如何融入产品研发流程~系统流程法