面向对象与面向过程
面向过程
分析出解决问题的步骤,然后一步一步解决.
面向过程适合处理简单的事情,直接关注流程,简单高效.
面向对象
以分类的方式进行思考和解决问题,面向对象的思维方式适用于处理复杂的问题,面向对象的思想符合人类的认知习惯.
面向对象适合处理复杂的事情,先使用面向对象的方式对整体关系作出分类,然后,根据不同的类深入细节的处理。
面向对象无法取代面向过程,他们是相辅相成的。面向对象关注于从宏观上把握事物之间的关系,在具体到如何实现某个细节时,仍然采用面向过程的思维方式。面向对象如果离开了面向过程,就无法实现真正的落地,成为无源之水。
Java类
类是一个模板,他描述了一类对象的属性与行为.
类是表示一个客观世界某类群体的一些进本特征抽象.
类的结构:
成员变量:对于对象属性的描述
方法:对象的行为
构造方法:用来创建一个对象
块:代码块
内部类:
1.类的声明格式
[访问权限修饰符] [修饰符] class 类名{
}
访问修饰符有两种public,default
修饰符:final,abstract
关键字class用来定义一个类
2.类的共有属性(成员变量)
public class Car{
//成员变量定义
String name; //名称
String color; // 颜色
float price;//价格
}
声明成员变量的格式[访问权限修饰符][修饰符]数据类型 变量名称;
3.发现类的方法
public class Car{
//成员变量定义
String name; //名称
String color; // 颜色
float price;//价格
public void begin(){
System.out.println("汽车启动");
[return 返回值;]
}
}
方法声明格式为:
[访问权限修饰符] [修饰符]数据类型/void 方法名(参数类型 参数名称)
Java对象
定义:对象是类的一个实例,是以类为模板,在内存中创建的实实在在存在的实例.
对象的创建与使用
使用new关键词来创建对象
Car baoma=new Car(); 以Car类为模板
new关键字+默认构造方法().
Car baoma 以Car类作为类型,声明了一个变量
通过这个变量来访问类中的属性,方法
同一类的每个对象有不同的成员变量存储空间。
同一类的每个对象共享该类的方法。
变量分类
一个类可以包含以下类型变量;
成员变量:
成员变量定义在类中,方法体之外.
成员变量可以使用Java中任何一种数据类型.
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化
float(0) booleaan(false) int(0) char()
成员变量可以被类中方法、构造方法和特定类的语句块访问。
成员变量的作用范围为整个类体。
public class Car {
/*
成员变量的定义
[访问权限修饰符][修饰符]数据类型 变量名[=值]
成员变量:定义在类中.方法体之外
成员变量可以使用任何一种数据类型
成员变量在创建对象的时候会从类中复制一份到对象中。
成员变量可以不赋值,java会使用默认值自动赋值
* */
String name;
String color;
double price;
int width;
long h;
boolean b;
char height;
局部变量
在方法,构造方法,语句块中定义的变量.
局部变量可以使用Java中的任何一种数据类型.
局部变量在使用前必须赋值.
变量声明和初始化都在方法中,方法结束后,变量就会自动销毁.
/*在方法、构造方法或者语句块中定义的变量被称为局部变量。 法的参数也属于局部变量,需要赋值
* 局部变量在使用前必须赋值
* 局部变量可以使用Java中的任何一种数据类型.
* */
public void start(String name) {
System.out.println("启动汽车");
return;
}
类变量
类变量也声明在类中,方法体之外,但必须声明为static类型。
方法分类
一个类可以包含以下方法
成员方法
成员方法是定义在类中,是在创建对象时创建.
语法格式:
修饰符 返回值类型 方法名 ( 参数列表) {
方法体语句;
[return 返回值]
}
/* 成员方法
[访问权限修饰符][修饰符]返回值类型/void 方法名(参数类型 参数名称){}{
* */
public void eat() {
System.out.println("吃");
return;
}
构造方法
用来创建对象的方法.
构造方法是定义在 Java 类中的一个用来创建对象的方法。
构造方法名与类名相同,且没有返回值,且不需要使用void修饰。
使用 new + 构造方法 创建一个新的对象。在创建一个对象的时候,至少要调用一个构造方法。一个类可以有多个构造方法。
每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法,但是只要在一个Java类中定义了一个构造方法后,默认的无参构造方法即失效。
/*构造方法
用来创建对象的方法
方法名与类名相同,无返回值,不需要void来修饰
一个类中可以显示多个构造方法
如果类中没有显示的声明构造方法,则类中会有一个默认的无参构造方法
当有声明构造方法 默认的无参构造方法会失效 必须显示出来才行
* */
public Person(){
System.out.println("方法1");
}
public Person(String x,int y){
name=x;
System.out.println("方法2");
}
类方法
类方法也声明在类中,但必须声明为static类型.
方法的重载
方法的重载是指一个类中可以定义名字相同的,但参数不同的多个方法.
调用时会根据不同的参数选择不同的方法
参数不同分为三部分:
1.数量不同
public Person(int a, int b){
System.out.println("方法3");
}
public Person(int a){
System.out.println("方法4");
}
2.类型不同
public Person(String x,int y){
name=x;
age=y;
System.out.println("方法2");
}
public Person(int x, int y){
System.out.println("方法3");
}
3.顺序不同
public Person(String x,int y){
name=x;
age=y;
System.out.println("方法2");
}
public Person(int y, String x){
System.out.println("方法5");
}
注意:方法重载跟方法的返回值类型与访问权限没有任何关系.