面向对象编程:
什么是面向对象编程:
OOP(oriented object programming):现向对象
-
面向对象模拟了人的(分门别类的认知思想):
-
面向对象是一种更符合人们思考习惯的思想
-
面向过程中更多的体现的是执行者,面向对象中更多的体现是指挥者。指挥对象做事情。
-
面向对象将复杂的问题简单化
例如水果:水果千千万,不可能一一认全,但可以分门别类的划分成多个种类,以水果为主类,可以根据不同的特点把水果分成各个子类,子类里包含了各种相似特性(属性)的水果。
想要了解面向对象,就要先了解面向过程。
面向过程:就是面向着具体的每一个步骤和过程,就是面对具体的每一个功能函数。这些功能函数相互调用,完成需求。
流程:提出问题——>分解问题(简单化,逻辑化,模块化,提高代码复用率)——>解决问题
对象:对象(Object)代表现实世界中可以明确标识的一个实体。例如:一个学生、一张桌子、一个圆、一个按钮甚至是一笔贷款都可以看作是一个对象。每个对象都有自己独特的标识、状态和行为。
-
一个对象的状态(state,也称为特征(property)或者属性(arrtibute))是由具有当前值的数据域来表示的。
例如:圆对象具有一个数据域radius,它是标识圆的属性。一个矩形对象具有数据域width和height,它们都是描述矩形的属性。
我们一般把对象的特有属性称之为成员变量。
-
一个对象的行为(behavior,也称为动作(action))是由方法定义的。调用对象的一个方法就是要求对象完成一个动作。
例如:可以为圆对象定义一个名为getArea()和getPerimeter()的方法。圆对象可以调用getArea()返回圆的面积,调用getPerimeter()返回它的周长。
我们一般把对象的行为称之为成员函数。
类(class):(类不能用 private,protected,static 修饰)且(public类只能有且仅有一个,并且public类的类名与文件名相同且mian函数只能在这个类中)。
类别,在java中,使用class关键字定义:
|---属性 类固有的特征(例如人的属性有身高,身高的固有类型为double)
|---行为和动作 函数function(方法 method)
对象(object):一个类别中的一个具体案例(例如瓜果类里面的西瓜)
如何定义类:
在java中 定义类,使用class关键字
格式:访问修饰符(不写也是一种修饰符,缺省) class 类名称(根据大驼峰法,首字母大写){
例如:(public) Class Dog{
//固有属性,类的固有特征
格式:访问修饰符 数据类型 属性名称 =属性值
例如:(public) String name = “大黄”;
//行为动作,
例如:狗会跑
Public void run{
System.out.println("我跑了,你快追!")
}
如何创建:
定义类,在根据类来创建对象
可以通过类来构造方法来创建对象,使用new关键字
格式: 函数类型 对象名称 = new构造函数();
例如:Scanner arr = new Scanner( );
如何操作【访问,设置】属性和方法
对象名称.属性 | 访问对象属性 |
对象名称.属性=值 | 设置对象属性值 |
对象.方法(实参列表) | 调用对象的方法 |
类的属性的默认值问题:
在java中,如果定义类的属性,存在属性但没有给属性赋值;java会给定默认值
数据类型 | 默认值 | 数据类型 | 默认值 | 数据类型 | 默认值 |
整型 | 0 | 浮点型 | 0.0 | 字符型 | 空格 |
布尔 | false | 字符串 | null | | |
重写ToString()方法,该方法在我们打印对象时,会自动填充
在空白区点击右键+点击source+Gennerate ToString (ALT+SHIFT+S)
类的初始化(构造方法):
格式:
例如:class Person{
……
public Person(int age, String name ){
This.name =name ;
This.age = age ;
}
Public Person( ){ //空 }
Public static void mian(String[] args){
Person p1 = new Person("小花",21)
System.out.println(p1);
Person p2 = new Person("*",……)
…………
…………
}
}
构造函数的特点:
构造函数没有返回值类型。也不需要写返回值。因为其是为构建对象的,对象创建完,函数就执行结束。
构造函数名称必须和类型保持一致。
构造函数没有具体的返回值。
构造函数的细节:
一个类中可以有多个构造函数,多个构造函数是以重载的形式存在的。
构造函数中也是有return语句的,用于结束初始化动作。
构造函数是可以被private修饰的,作用:其他程序无法创建该类的对象。
在java类中, 如果没有自己定义构造函数,系统会自动生成一个无参构造方便我们构建一个属性都为默认值的对象。
Public Person(){ 空 };
但当我们定义了构造函数之后,系统将不会再生成一个无参构造,如果需要这个无参,需要重新定义
This 指针:
在java中,存在this关键字,这个关键字默认会指向当前对象(只能使用在普通方法中,不能使用在静态方法中(static修饰的方法)。)
This.属性=形参
类的成员:
-
属性(普通和静态)
-
方法
-
构造方法
-
静态属性
-
静态方法
-
构造代码块{ }
-
静态代码块static{ }