面向对象OOP
一、 面向过程&面向对象
1、面向过程:
①按照步骤来进行,首先完成第一步,才能执行第二步。
②就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以。
2、面向对象:
①问题可以剖析为几个类,类有哪些特征和行为,类与类之间有哪些的关系
②是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
二、 三个特性
1、封装
把对象的属性和方法结合在一起,并尽可能隐藏对象的内部细节,形成一个不可分割的独立单位(即对象),对外形成一个边界,只保留有限的对外接口使之与外部发生关系。
private关键字 来封装属性,通过get方法来获取属性的值。通过set方法进行属性赋值。
2、继承
是软件重用的一种形式,它通过吸收现有的类的数据和方法,并增加新功能或修改现有功能来构建新类。一般类称为父类或超类,特殊类称为子类。特殊类的对象拥有其一般类的全部属性和方法
3、多态
是指在父类中定义的属性或方法被子类继承之后,可以具有不同的表先行为。这使得同一个属性或方法在父类及其各个子类中具有不同的语义。Java中可以通过子类对父类方法的重写实现多态,也可以利用重载在同一个类中定义多个同名的不同方法来实现。降低了程序块之间的耦合性,提高了类的封闭性。分为重写(不同类之间)和重载(同一个类).
4、抽象 一些公司认为是四个特性
三、类的解释
1、类是Java的核心和本质,是Java语言的基础,类定义了一种新的数据类型。
2、就是类的模板,而对象就是类的一个实例
3、类由属性和方法构成
4、 对象的特征在类中表示为成员变量,称为类的属性或成员变量。
5、类的方法或成员方法是对象执行操作的一种规范。方法指定以何种方式操作对象的数据,是操作的实际实现。包含构造方法。
6、基本数据类型存放在栈中,新建的对象存在堆里边
四、类的声明
语法
[访问符][ 修饰符]class<类名>{
[属性]
[方法]
}
例子
package com.hyg.pojo;
/**
* 手机类
* 如果类中只加get、set方法。这个类称为实体类(JavaBean)
* 实体类具有记录数据的功能
* @author 15332
*/
public class Phone {
/*属性*/
//品牌
private String brand;
//颜色
private String color;
/*方法,快捷键:shift+alt+S*/
/*get方法:获取类的属性的值
* return 中的参数前的this可有可无
* */
public String getBrand() {
return brand;
}
/*set:把传过来的参数,赋值给当前类的属性。
* set方法:给属性赋值
* */
public void setBrand(String brand) {
this.brand = brand;//this代表本类,解决命名冲突问题。
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
访问符
用于声明类、属性和方法的访问权限
有:public(共有)、 protected(受保护)、 private(私有) 或缺省
修饰符
用于说明所定义的类的特性
有:abstract(抽象)、 static(静态)、 final(最终)
修饰符不是必须的,需要根据类的特性进行使用
五、 get、set方法
1、get方法
get方法:获取类的属性的值
return 中的参数前的this可有可无
例子:
public String getBrand() {
return this.brand;
}
2、set方法
把传过来的参数,赋值给当前类的属性。
给类的属性赋值
例子
public void setBrand(String brand) {
this.brand = brand;
}
六、对象的创建
1、声明并赋值
Phone huawei = new Phone();
2、先声明,后赋值
Phone sony;//声明一个变量,即定义该类的一个对象
sony = new Phone();//创建该对象的实际物理复刻,即在内存中为该对象分配地址空间
//new 后面跟的是构造方法
3、 声明对象后,如果不想给对象分配存储空间,则可以使用”null”关键字给对象赋值
Phone iphone = null;
4、调用方式
对象名.方法名
对象名.属性
七、构造方法
特点
1、每个类都会有一个无参构造方法
2、构造方法名字和类的名字相同
3、无返回值类型,初始化类的内部状态(属性值)
4、创建有参构造方法后,无参构造方法会被覆盖
5、创建有参构造方法后,若想使用无参构造方法,可以在创建一个无参构造方法
1、无参构造方法
语法:
[访问符]<类名>( ){
}
例子
public String getBrand() {
return this.brand;
}
引用例子
Phone huawei = new Phone();
2、有参构造方法
无返回值类型
语法:
[访问符]<类名>([参数列表]){
//初始化语句
}
创建例子
public Phone(String brand,String color){
//初始化类的状态
this.brand = brand;
this.color = color;
}
引用例子
Phone huawei = new Phone("huawei","黑色");
八、类的方法
语法
[访问符][修饰符]<返回类型>方法名([参数列表]){
//方法体
}
方法调用
对象名.方法名();
*注
null
null指的是空的引用,不指向任何地址。
null可以赋值给引用类型
null也可以用于释放内存
this关键字
this关键字代表当前所在类的对象,即本类。
1、用于解决变量的命名冲突和不确定性问题
2、用于获取当前类对象的引用
实体类(pojo包中)
属性和get、set方法