面向对象思想
面向对象
- 面向对象适合处理复杂的事情,先使用对象对整体关系作出分类,然后根据不同类进行细节处理。
- 面向对象关注于从宏观上把握事物之间的关系,在具体到如何实现某个细节时,仍然采用面向过程的思维方式。(换句话说,面向对象就是将有相同特征的事物归类,对这个“类”,进行宏观上的设计。从而实现具体功能)
- 万物皆对象,世界上每一个存在的事物都可以理解为对象。因为每一个事物都有一定的特点,而面向对象的思想就是对这些特点进行归类,通过对类中属性、方法的修改,来达到描述对象的目的。
面向过程
- 面向过程适合处理简单的事情,直接关注解决问题的步骤。
- 就具体的细节而言,通过面向对象直接进行编写更方便。
- 面向过程思想就是对面向过程思想实现的具体细化,面向对象注重分类管理,说白了就是把面向过程思想描述的这些解决基本问题的步骤进行封装,使编程人员能站在更高的角度去看待问题,理清程序的模块。
类
-
类是一个模板,用来描述一类对象的属性和行为。( 类是描述客观世界中某类群体的基本特征抽象特征。)
对象是具体存在的,是根据类创建出来的实体。
-
类的声明格式为:
[访问权限修饰符] [修饰符] class 类名{
}
public final class Hello{ }
- 访问修饰符有两种:public、default
- 修饰符:final、abstract
- 类名首字母大写(这里的类名准确的说应该是类名的一部分,完整的类名叫做全类名,其中包含包名和"类名"。)
-
类的结构:
-
成员变量:(描述的是对象的属性)定义在类中且方法体之外的变量。
//成员变量可以是java语言中任意的数据类型(8种基本数据类型和3种常见引用类型) //声明成员变量格式: [访问权限修饰符] [修饰符] type 变量名 = [变量值] ;//[]表示可有可无的部分。 class Demo{ String color; int a = 1;//可以在此不用赋值,但使用前必须赋值。 double b = 1.3; }
-
代码块:
代码块就是没有名称的方法体。
代码块分为静态代码块和实例代码块。
静态代码块随着类的加载而加载;而实例代码块则会在创建该类的对象的时候跟着类中的构造方法一块儿被执行。static{ System.out.print("这是静态代码块。") } { System.out.print("这是实例代码块。") }
-
方法:(描述的是对象的行为)。
- 方法分为:成员方法、构造方法、类方法(用static 修饰的方法,随类加载)。
-
方法的声明格式:
访问权限修饰符 修饰符 返回值类型/void 方法名 ( 参数列表) {
方法体语句
return[返回语句]
}public static void main(){ int a = 1; return a; }
-
方法的重载
在同一个类中,如果多个方法的方法名相同,则一定存在方法重载现象。
方法的重载可根据其参数分为三类:- 参数类型不同
- 参数数量不同
- 参数顺序不同
class Demo{ public Demo(){ } public Demo(int a,double b){ } public Demo(int a,double b,int c){ } public Demo(double b,int a){ } }
-
构造方法:
构造方法通俗的讲就是在类中和类方法名一致的方法。不过也要满足一些条件:- 不能有返回值。
- 不能用void修饰。
- 通常情况下不用static修饰
构造方法的功能:
-
创建对象(在在创建一个对象的时候,至少要调用一个构造方法。)
class Demo{ public static void main(){ Demo d = new Demo();//赋值号右边是用构造方法创建个对象,而左边的d是引用类型的变量,它里面存的不是这个对象,而是对象的地址。而它本身则是和基本类型一样在堆中存储。 } }
-
给成员变量初始化(赋初值)
class Demo{ int a ; public Demo(){ a = 1; } }
-
内部类:
内部类就是再类中声明的类