- 为什么使用面向对象!
面向对象是为了解决系统的可维护性,可扩展性,可重用性,
2.面向对象设计的过程是抽象的过程!(3步骤)
(1)发现类 (2)发现类的属性 (3)发现类的方法
3.面向对象设计的过程是抽象的过程遵循的原则!
(1)属性和方法的设置是为了解决业务问题
(2)关注主要属性和方法
(3)如果没有必要,勿增加额外的类、属性、和方法
4.类的成员
this关键字通常指当前对象的引用,他可以调用当前对象的成员
类主要由属性和行为组成,属性和行为又被称为类的成员变量和成员方法(除此之外,类的成员还有构造方法和代码块等)
- java中创建对象
- 通过构造方法来创建对象
- 通过对象名.属性名方式调用属性
- 通过对象名.方法名方式调用方法
- 类和对象的关系
类和对象 是面向对象的两个核心概念
类是对象的抽象,对象是类的具体实例
- java中的常量
- 定义 final 数据类型 变量名=值
- 常量在程序运行的过程中不会发生变化,只能引用,不能被赋值
- 变量名大写,必须给值
- 类名,属性名,方法名和常量名的命名规范
- 类名由一个或几个单词组成,每个单词的第一个字母大写(Dog,StringBuffer)
- 属性名和方法名由一个或几个单词组成,第一个单词首字母小写,其他单词首字母大写(health,setName())
- 常量名由一个或几个单词组成,所有字母大写(PI,SEX_MALE)
- 构造方法
无参构造:
访问修饰符 Dog(){}
有参构造:
访问修饰符 Dog(参数列表){}
- 构造方法的特点和作用
特点:构造方法的名称和类名相同,没有返回值类型,如果有,则不是构造方法,而是和构造方法同名的成员方法
作用:在创建对象时执行一些初始化操作,如给成员属性赋值(先执行类的属性定义语句依次给个属性赋初始值)
F5:单步跳入 F6:单步跳过
注意:在没有给类提供任何构造方法时,系统会提供一个无参的方法体为空的默认构造方法,
一旦提供了自定义构造方法,系统将不在提供这个默认构造方法,
- 方法重载
判断依据:
- 在同一个类里
- 方法名相同
- 参数列表不同(方法参数的个数或参数类型不同)
- 与方法返回值没有关系
- static修饰符
- Static 以用来修饰属性,方法,代码块,被static修饰的成员称为类成员(静态成员)
- 静态成员:归属整个类,为该类的所有对象所共享
- 实例成员(普通成员):归属该类的某个对象
- static运用规则
- 在加载类的过程中,完成静态变量的内存分配,在执行静态块,两者都是在创建对象之前完成的
- 类属性和类方法可以通过类名和对象名访问,实例属性和实例方法只能通过对象名访问
- 类方法只能访问类属性奥和其他类方法
- 静态方法不能使用this和super关键字
- Static与final连用称为静态常量
- 在方法里不可以定义static变量,类变量不能是局部变量
- 封装的概念
封装是面向对象的三大特性之一,就是将类的状态信息隐藏在类内部,不允许外部程序直接访问,而通过该类
提供的方法来实现对隐藏信息的操作方法
- 封装的步骤
- 修改属性的可见性来限制对属性的访问(private)
- 为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于对这些属性的存取;
- 在赋值方法中,加入对属性的存取控制语句。
- 封装的好处
- 隐藏类的实现细节
- 让使用者只能通过程序规定的方法来访问数据
- 可以方便的加入存取控制语句,限制不合理操作
- 访问修饰符
Private:成员变量和方法只能在其定义的类中被访问,具有类可见性
默认:成员变量和方法只能在同一个包里的类访问,具有包可见性
Protected:可以被同一个包里的类访问,被同一个项目中不同包的子类访问
Public 可以被同一个项目中的所有类访问,具有项目可见性,这是最大的访问权限
- This用法
- 使用this调用成员变量,解决成员变量和局部变量的同名冲突
- 使用this调用成员方法
- 使用this调用重载的构造方法,只能在构造方法中使用,必须是构造方法的第一条语句
- This在对象内部指代自身的引用,所以this只能调用实例变量,实例方法和构造方法
- This不能调用类变量和类方法,也不能掉用局部变量