JAVA面向对象

JAVA面向对象

  • 面向对象编程(OOP,Object-Oriented Programming)
  • 以类的方式组织代码,以对象的形式封装数据

三大特性

  • 封装
  • 继承
  • 多态

类与对象的关系

  • 类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物
  • 对象是抽象概念的具体实例

创建与初始化对象

  • 使用new关键字创建对象: 除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用

  • 构造器: 也称为构造方法,是在进行创建对象的时候必须调用的

    • 和类名相同;没有返回值
    • 使用new关键字,本质是在调用构造器;初始化对象的值
    • 一旦定义了有参构造,无参就必须显示定义

*IDEA快捷键: alt + insert 快速生成

*栈中生成对象引用变量名,堆中生成实例?

封装

  • 程序设计要求"高内聚,低耦合"。高内聚就是类的内部数据操作细节自己完成,不允许玩不干涉;低耦合: 仅暴露少量的方法给外部使用
  • 封装: 通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏
  • 提高程序安全性,保护数据;隐藏代码实现细节;统一接口;提升系统可维护性

*private 私有修饰符

继承

  • 继承本质是对某一批类的抽象,从而实现对现实世界更好的建模

  • JAVA中类只有单继承,没有多继承

  • 关键词: extends 意思是扩展,子类是对父类的扩展

  • 继承是类与类的一种关系;此外,类与类之间的关系还有依赖、组合、聚合等


  • Object类: JAVA中所有的类都默认直接或间接继承Object类
  • super:
    • 调用父类的方法或属性(私有的方法或属性无法被继承)
    • 子类无参构造默认调用父类的无参构造且先调用
  • 方法重写:
    • 需要有继承关系,子类重写父类方法;方法名相同,参数列表相同
    • 重写与静态方法无关
    • 只能使用public关键词
    • 修饰符: 范围可以扩大,不能缩小: public>prodected>default>private
    • 抛出的异常: 范围可以缩小,不能扩大

*IDEA快捷键: CTRL + H 展示当前类继承结构

*final修饰的类不能被继承

多态

  • 即同一方法可以根据发送对象的不同而采用多种不同的行为方式
  • 一个对象的实际类型是确定的,可以指向的引用类型就不确定了
//父类的引用指向子类
Object p1 = new Person();
  • 父类可以指向子类,但是不能调用子类独有的方法
  • 多态是方法的多态
  • 多态存在条件:
    • 有继承关系
    • 子类重写父类方法
    • 父类引用指向子类对象
  • instanceof

//匿名代码块;每次新增对象时执行
{
    
}
//静态代码块;只执行一次
static{
    
}
//静态代码块执行 先于 匿名代码块 先于 构造方法

//===================================================

//静态导入包,可以直接调用random()方法(random().sout)
import static java.lang.Math.random;

抽象类

  • abstract修饰符;可以用来修饰类和方法

  • 不能new抽象类

  • 抽象方法只有方法名字,没有方法的实现;抽象方法只能靠子类去实现它

  • 抽象方法必须在抽象类中;抽象类中可以写普通方法

接口

  • 对比:

    • 普通类: 只有具体实现
    • 抽象类: 具体实现和规范(抽象方法)都有
    • 接口: 只有规范;多继承
  • 接口就是规范,定义的是一组规则

  • 接口的本质是契约,制定好后大家都遵守

  • interface关键词定义接口;implements关键词实现接口

  • 接口中的所有定义的方法都是抽象的 public abstract;所有定义的属性都是常量 public static final

  • 实现了接口的类,需要重写接口中的方法

  • 接口不能被实例化;接口中没有构造方法

内部类

  • 内部类就是在一个类的内部定义另一个类
  1. 成员内部类
  2. 静态内部类: static
  3. 局部内部类: 在方法中
  4. 匿名内部类
//例;不用将实例保存到变量中
new Apple().eat();

*一个JAVA类中可以有多个class类,但只能有一个public class类

posted @ 2022-12-24 13:52  Learn1ng  阅读(26)  评论(0)    收藏  举报