面向过程pop和面向对象oop
面向过程和面向对象的比较
- 面向对象和面向过程是程序设计不同的编程思想
- 面向过程处理大规模问题时复杂性远大于面向对象
- 面向过程相比于变相对象其流程化使得编程任务明确
面向过程(procedure -Oriented Programming),简称POP
- 特点:以函数为单位,重点关注的是过程(相同的处理方式可以划分为一个函数)
- 优点:适合解决小型且简单问题
- 缺点:代码拓展能力差,维护难度高
- 代表语言:C语言
面向对象(Object Oriented Programming),简称OOP
- 特点:以类为单位,重点关注的是类(把不同的事物的相同属性划分为一个类)
- 优点:适合解决复杂问题,代码拓展能力强,可维护性强
- 代表语言:C++、C#、Java、Python
类和对象
面向对象具体实现
类:具有相同特征(同一类)事物的抽象描述,例:人类,车类,动物类等,是抽象的概念
先根据客观的事物进行抽象(设计为程序)然后由抽象创造出具体,最终使用的是具体
/*
访权限修饰符(public 无)
修饰符(final abstract)
class修饰类
在Car类中,对汽车属性和行为进行定义
*/
public class Car{//类
/*
成员变量 (以为变量直接定义在类中,所以称为类的成员)
名词,属性
成员变量可以在类中定义时不给其赋默认值,系统会自动初始化赋值
默认值:引用类型为null float--0.0
boolean--false char--‘ ’ int long--0
成员变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)
成员变量的作用范围为整个类体。
*/
String name;
float price;
String color;
/*
成员方法
动词——>行为,功能
*/
public viod run(){
System.out.println("汽车行驶");
}
public viod stop(){
System.out.println("汽车停止");
}
/*Car类只是抽象顶点定义了汽车有哪些功能,相当于画了个图纸,不能直接使用
类名. 什么都调用不到
所以类是抽象概念,不能直接使用,要使用得创建类的实例*/
main
Car bm/*对象*/ = nwe Car();
bm.name = "宝马";
bm.color = "red";
bm.run();
bm.stop();/*属性和行为*/
}
第一步 发现类
第二布 定义类的成员变量(名词)
第三步 定义类的方法
第四步 使用类创建对象
什么是对象
对象:是类的一个实例,是以类为模板在内存中创建的实际存在的实例。
如何创建对象
使用new关键字,car()--类的构造方法,类中会自动提供
new Car()使用关键字创建一个具体的对象,对象存在内存中
car bm声明一个car类型变量
=把右边创建的对象(地址)赋给左边的变量,左边的变量可以表示内存的对象
Car bm = new Car();
bm.name="";
类与对象的关系
类是模板,是定义
对象是具体实例,互不干涉
构造方法
构造方法名与类名相同,且没有返回值,且不用加void修饰
public class person {
String name;
int age;
/*
类构造方法
特点:方法名字与类名相同
无返回值,不用加void修饰
每一个类中都有一个默认无参的构造方法,一旦类中定义了有参的构造方法,那么默认的无参构造方法就消失了,除非再次定义
public person(){
name =null;
age = 0;
}
作用:为刚创建的对象成员变量进行初始化赋值
*/
public person(){
}
public person(String n,int a){
name =a;
age = b;
}
public void showInfo(){
System.out.println("名字"+name+"年龄"+age);
}
main
person p1 = new person();//创建对象时,调用的是无参的构造方法初始化对象成员,先赋予默认值,后赋予
p1.name = "zhang";
p1.age = 20;
p1.showInfo();
person p2 = new person("li",22);
p2.showInfo();
}
方法的重载
1.在一个类中,有多个名称相同的方法
2.如何在调用时区分同名的方法:
通过方法的参数的个数,顺序,类型
3.构造方法和成员方法都可以实现方法的重载
4.方法的重载与返回值无关
public person(int a,String b,String c){
name =a;
age = b;
xingbie = c;
}
public person(String b,int a){
name =a;
age = b;
}
对象与引用
Java 语言中除基本类型之外的变量类型都称之为引用类型
Java中的对象是通过引用对其操作的
值传递:形参数类型是基本数据类型(传数值)
方法中的形参改变不影响原本的数据
引用传递:形参数类型是引用数据类型参数(传地址)
方法中的形参改变会将原本的数据