JavaSE基础语法-面向对象1
第三章 面向对象
1.面向过程和面向对象
面向过程(procedure oriented programming,POP):分析出解决问题所需要的步骤,然后把步骤一步一步的实现,面向过程直接关注流程。
例如:往冰箱装大象问题.分成三步
1.打开冰箱
2.装入大象
3.关上冰箱
面向对象:(object oriented programming ,OOP):以分类的方式进行思考和解决问题,面向对象先对整体关系作出分类,然后根据不同的类深入细节的处理,面向对象的思想符合人类的认识习惯。更注重宏观、
整体上的设计。
例如:往冰箱装大象问题
先设计两个类
1.冰箱类(包含门类)
门类(包含两个方法,开门和关门)
2.人类(包含操作方法)
3.大象类(进入冰箱的功能)
三个类之间相互调用彼此的功能共同处理问题
注:面向过程更适合处理简单的问题,直接关注流程,简单有效。
面向对象适合处理复杂的事情,先使用面向对象的方式对整体关系做出分类,然后,根据不同的类深入细节的处理。
面向对象无法取代面向过程,它们是相辅相成的。面向对象关注于从宏观上把握事情之间的关系,在具体到如何实现某个细节时,仍然采用面向过程的思维。
2.Java类
什么是类?
类是一个模板,它描述一类对象(事物)的属性和行为。
类是表示一个客观世界某类世界类群体的一些基本特征抽象。
类=汽车设计图;对象=实实在在的汽车。
类里面定义事物特征汽车设计图Java.文件。
对象是具体存在==具体的是某一辆车(实际存在,可以使用)。
类的结构:
成员变量:对象属性的描述
方法:对象的行为;(可以做的事情)
构造方法:用于创建对象
内部类:即在类体中声明的类
块:代码块
类的定义:
第一步:方法类;
类的声明格式为:[访问权限修饰符] [修饰符] class Car{}
访问修饰符有两种public和default
修饰符:final和abstract
关键字class用于定义一个类
Java类名的命名规范:类名首字母大写,见名知意。
第二步:发现类的公共属性;
public class Car{
//成员变量定义
String name; //名称
String color; // 颜色
float price;//价格
}
声明成员变量的格式为:
[访问权限修饰符] [修饰符] type attr_name [=defaultValue] ;
第三步:声明类的方法:
public class Car{
//成员变量定义
String name; //名称
String color; // 颜色
float price;//价格
方法声明格式为:
[访问权限修饰符] [修饰符]/ void start(){
System.out.println("汽车启动");
[return 返回值;]
}
}
3.Java对象
对象:对象是类的一个实例,是以类为模板在内存中创建的实际存在的实例。
类汽车图纸,对象实际存在的一辆汽车,拥有类中定义的功能,可以被使用
4.对象的创建和使用:
Car x1=new Car();
new关键字+默认构造方法();在内存中创建一个对象,但不能使用,需要在左侧以类为模板声明一个变量指向内存空间具体的对象,使用变量访问对象中的属性、方法。
注:通过类可以创建无数个对象。
5.类和对象
类是一类事物的抽象概念,是一个模型。
对象是由这个模型所创造的一个一个的具体存在的,是实实在在的实例。
所以创建对象的过程也叫实例化。对象==实例。
实现生活先有对象有类,而编程先设计类后创建对象。
6.变量分类
成员变量:
1.定义在类中,方法体之外。
2.数据类型为基本类型和引用类型。
3.变量可以不赋值,Java自动赋值。
4.在创建对象时会从类体中复制一份到对象中。
局部变量:
1.在方法、构造方法、语句块定义的变量。
2.数据类型为基本类型和引用类型。
3.在使用前必须赋初值。
4.变量声明、初始化都在方法中,方法结束后,变量自动销毁。
5.方法的参数也是局部变量,在调用时,会为其赋值。
类变量:(也叫静态变量)类变量也声明在类中,方法体之外,但必须声明为static类型。
7.方法分类
一个类可以包含以下类型方法:
**成语方法:**成员方法是定义在类中,这种方法在创建对象时创建。
语法格式:
[修饰符]返回值类型 方法名(参数列表){
方法体语句;
[return 返回值;]
//当返回值类型为void时,return可有可无
}
构造方法:
1.是定义在Java中的一个创建对象的方法
2.方法名与类名相同,没有返回值,不需要void修饰。
3.一个类中可以拥有多个构造方法。(方法重载)
4.如果类中没有显示的声明构造方法,类中会默认有一个无参的构造方法。
5.一旦类中定义了有参的,默认无参的构造方法会被覆盖。
[访问权限修饰符] 类名(参数列表){
方法体语句;
}
类方法:(也叫静态方法)类方法也声明在类中,但必须声明为static类型。
方法重载:
什么情况构成方法重载:在一个类中有多个方法名相同,且参数不同的方法。
参数不同:类型不同,个数不同,顺序不同。
重载的作用:可以处理功能相同,但是参数类型不同的一类问题。
**注:**成员方法和构造方法都可以重载。