博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二 面向对象
阅读量:4677 次
发布时间:2019-06-09

本文共 1786 字,大约阅读时间需要 5 分钟。

一  面向对象

  • 类: 一组相关的属性和行为的集合
  • 对象:该类事务的具体表现
  • 三个特征: 封装,继承,多态
  • 面向对象开发:不断地创造对象,使用对象,指挥对象做事情
  • 面向对象设计: 对创造的对象进行管理和维护

二 JVM虚拟机

jvm主要分布有三块区域

  • 堆heap:存放对象
  • 栈stack:存放方法
  • 方法区: 存放字节码文件
  • 垃圾回收:如果堆里面的对象没有被指向,则自动回收

程序的执行顺序:

  1. 字节码文件加载到方法区
  2. 方法压栈
  3. 堆里面创建对象
  4. 将栈中的方法指向堆里面对象的地址
  5. 给成员变量赋值
  6. 方法弹栈
  7. 程序执行结束

三  封装

  • 封装就是隐藏对象的属性和实现细节,仅对外提供公共访问方式
  • 优点:隐藏代码的实现细节,提高安全性
  • 对于封装,用private修饰成员变量,提供getset方法,private只是封装的一种形式,封装不是私有

四 构造方法与this关键字

  • 构造方法的调用必须用this,并且this必须在第一行
  • this代表当前对象的引用,this调用的属性是当前对象的属性
  • 如果定义了有参构造,那么系统就不再提供默认的无参构造,在实例化的时候不允许创建无参对象。

五 static关键字与代码块

  •     static修饰的是静态变量,static修饰的方法叫静态方法,static修饰的代码块叫静态代码块
  •     静态变量、静态方法、静态代码块属于类级别,与对象无关,所以不能使用this
  •     静态代码块在类加载的时候就执行,顺序在构造方法之前
  •     某一类物体如果被多个物体共享,比如WiFi,那么可以用static修饰
  • 代码块执行顺序:
  •    1 静态代码块:随着类的加载而执行,优先级最高
  •    2 构造代码块:每创建一个对象就执行一次,优先级在构造方法前面
  •    3 构造方法:   每创建一个对象就会执行一次

六 封装继承多态

封装: 隐藏对象的属性和实现的具体细节,仅对外提供公共访问的方式。 private + getter/setter

继承: 类与类之间一种关系,用extends关键字实现,java不支持多继承,但支持多重继承,只能继承public、protected修饰的成员,不能继承private、final修饰的成员

  •           优点:  
  •                    提高了代码的复用性
  •                    提高了代码的可维护性
  •                    让类与类产生了关系,是多态的前提
  •          缺点:
  •                   增强了类之间的耦合,而软件开发的原则是高内聚,低耦合(内聚:每个模块尽可能完成自己的功能,不依赖模块外部的代码。耦合:模块之间的联系

多态:

  • 条件:
  • 必须要有继承关系
  • 需要有方法的重写
  • 必须要有父类的引用指向子类的对象

七 异常的继承体系              

Throwable根类:

  •      Exception: 

     

            
  •      Error

 

八 值传递和引用传递           

  •  形参是基本数据类型:值传递,值传递操作形参,实参不改变。
  •  形参为类类型:引用传递,两个变量指向同一块存储空间

 

九 final关键字

  • final修饰的类无法背继承
  • final修饰的方法无法被重写
  • final修饰的局部变量一旦被赋值,无法改变
  • final修饰的成员变量必须初始化值

十 修饰符

     权限修饰符: private,默认,protected,public

     状态修饰符:static ,  final

     抽象修饰符:abstract;

                       本类     同一个包下     不同包下(子类)   不同包下(无关类)

  • private      y                                                                          
  • 默认         y        y
  • protected  y       y                        y                       
  • public       y       y                        y                                y

十一 内部类InnerClass、静态内部类、局部内部类

  •     内部类可以直接访问外部类的成员,包括私有
  •     外部类要访问内部类的成员,必须创建对象
  •     外部类名.内部类名 对象名  =  new 外部类对象. new内部类对象 ;  Outer.Inner oi = new Outer().new Inner();

      静态内部类: 外部类名.内部类名  对象名 = new 外部类对象 . 内部类对象  Outer.Inner oi = new Outer().Inner();

      局部内部类: 方法里面的类

      匿名内部类 : 

                        内部类的简化写法。是局部内部类的一种 

                        前提是存在一个类或者接口。  new 类名/接口名(){  重写方法  };

                        本质是继承了该类或者实现了该接口的子类匿名对象。

    

                       

转载于:https://www.cnblogs.com/ltfxy/p/10027561.html

你可能感兴趣的文章
非空 默认 男 mysql_MySQL进阶13--常见六大约束: 非空/默认/主键/唯一约束/检查约束/外键约束--表级约束 / 列级约束...
查看>>
mysql错误修改数据_mysql数据修改问题
查看>>
navicat忘记mysql密码_navicat连接My SQL时忘记root密码处理方法
查看>>
mysql 左连接 左外连接吗_什么是左外连接?左外连接在工作表查询中的应用
查看>>
python sum函数导入list_python sum函数iterable参数为二维list,start参数为“[]”该如何理解...
查看>>
docker 删除多余镜像_多余Basedisk删除和vDisk镜像反转技术简介
查看>>
mysqlin会使用索引吗_被面试官虐了,索引为何使用B+树,你知道吗
查看>>
mysql8单节点500m_Kubernetes 部署 Mysql 8.0 数据库(单节点)
查看>>
mysql数据工厂生产_MySQL超时与天蓝色数据工厂副本
查看>>
python缩进可以用在任何语句之后_每天一道Python选择题--python缩进
查看>>
mysql查询左边大于左边_MySQL WHERE 子句
查看>>
java 获取颜色_java关于照片属性的获取,颜色模式
查看>>
session丢失原因 java_session没有过期,其保存的数据无故丢失的原因
查看>>
java pkcs 11 write_java pkcs#11读取证书加解密(初学-分享)
查看>>
tranisant java_java tranisant
查看>>
java ibatis 存储过程_ibatis 调用存储过程
查看>>
java中的softreference_Java语言中内存优化的SoftReference 和 WeakReference的对比分析
查看>>
java提供了丰富的类库_Java优势有哪些?
查看>>
java 过滤器权限控制_JAVA过滤器,实现登陆权限限制
查看>>
设计模式java 模板模式_java设计模式--模板方法模式
查看>>