Java核心思想—面向对象

面向过程 & 面向对象

面向过程:步骤清晰

面向对象:物以类聚,分类的思维模式

面向对象

抽象,本质:以类的方式组织代码,以对象的形式组织(封装)数据。

三大特性:

  • 封装
  • 继承
  • 多态

对象是具体的事物,类是对对象的抽象

类是对象的模板

创建与初始化对象

  • 使用new关键字创建对象
  • 使用new创建时,除了分配内存空间以外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用
  • 构造器:也被称为构造方法,实例化时可以初始化对象
    • 必须和类的名字相同
    • 必须没有返回类型,void也不能写
public class Student {    
    //属性    
    String name;    
    //构造器,实例化初始值    
    //1.使用new关键字,本质调用构造器    
    //2.用来初始化值    
    public Student(){  
    }    
    //有参构造:一旦定义有参构造,无参就必须显示定义    
    public Student(String name){        
        this.name = name;
    }
}

封装

数据的隐藏,

高内聚,低耦合

属性私有, private:私有。提供可以操作属性的方法——get/set

意义:

1.保护数据,提高查询安全性

2.隐藏代码实现细节

3.统一接口

4.提高系统可维护性

继承

本质:对某一批类的抽象。

关键字 extends

继承是类与类之间的关系,子类与父类之间具有”is a"的关系。Java都是单继承

私有的属性与方法不可被继承

  • object类——所有类都继承于object类
  • super-this
    • super调用父级属性与方法
    • this调用自身所在类的属性与方法
  • 方法重写
    • 子类重写父类的非静态方法。
      • 静态方法属于类级别
      • 非静态方法属于实例级别
    • 参数列表必须相同
    • 方法名必须相同
    • 返回类型必须相同
    • 抛出的异常不可扩大

父类引用指向子类对象

一个对象的实际类型是确定的,可以指向的引用类型是不确定的

此时引用可以访问:

  • 父类中声明的所有public属性
  • 父类中声明的protected属性
  • 父类中默认访问权限的属性
  • 子类中重写父类的方法

不能访问:

  • 子类中独有的属性
  • 子类中隐藏父类的属性(子类声明中与父类同名的属性)
  • private属性

多态

  • 方法的多态

  • 父类和子类有联系,类型转换异常!ClassCastException!

  • 存在条件:继承关系;方法需要重写;父类引用指向子类对象

注意事项:

  • 属性没有多态
  • 静态方法没有多态,static方法属于类方法
  • private和final方法不能重写
  • 构造方法不能重写
  • 向下转型需要类型检查、
  • 重写方法时,子类方法访问权限不能比父类更严格

Static关键字

static关键字的内容会在java程序执行第一个被加载到内存中

static成员在类加载时就初始化

主要应用

1.静态变量(类变量)

2.静态方法

3.静态代码块

4.静态内部类

5.静态导入

注意事项:

1.线程安全问题

2.内存泄漏风险

3.测试困难

4.过度使用破坏对象的封装性