面向对象

一  面向对象

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

二 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 类名/接口名(){  重写方法  };

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

    

                       

posted @ 2018-11-27 17:07  IslandZzzz  阅读(133)  评论(0编辑  收藏  举报