面向过程和面向对象的设计思想
-
面向过程:procedure orientd progamming 缩写 POP
-
分析出解决问题所需要的步骤,然后把步骤一步一步实现
-
面向过程编程直接关注流程
-
-
面向对象:object oriented programming 缩写 OOP
-
以分类的方式进行思考和解决问题
-
面向对象先对整体关系作出分类,然后根据不同的类深入细节的处理
-
-
面向对象的思想符合人类的认知习惯
-
面向对象无法取代面向过程,他们是相辅相成的。面向对象关注于从宏观
上把握事物之间的关系,在具体到如何实现某个细节时,仍然采用面向过
程的思维方式。面向对象如果离开了面向过程,就无法实现真正的落地,
成为无源之水。
java类
-
什么是类?
-
类是一个模板,它描述一类事物的属性和行为的集合.
-
类是表示一个客观世界某类群体的一些基本特征抽象.
-
-
类的结构
-
成员变量:事物属性的描述;
-
方法:事物的行为;(可以做的事情)
-
构造方法:用于创建对象;
-
内部类: 即在类体中声明的类。
-
块:一段没有名称的代码块。
-
java类的定义
-
发现类 根据不同类型的对象,抽象出”类“
-
类的声明格式:[访问权限修饰符] [修饰符] class Car{ }
-
访问修饰符有两种public、无(默认)
-
修饰符:final,abstract
-
关键字class用来定义一个类
-
-
java类的命名规则:类名首字母大写,见名知意,驼峰表示
-
-
发现类的共有属性(成员变量)
-
例如:
//汽车的共有属性:颜色 名字 价格... public class Car {//汽车类 //定义类的成员变量(属性)名词,成员:类的成员,在类中定义 //声明成员变量的格式为: [访问权限修饰符] [修饰符] type attr_name [=defaultValue] ; String name;//名字 float price;//价格 String color;//颜色 }
-
-
发现类的方法
//汽车类共有的行为:启动 行驶 刹车... public class Car {//汽车类 //定义类的成员变量(属性)名词,成员:类的成员,在类中定义 String name;//名字 float price;//价格 String color;//颜色 //方法声明格式: //[访问权限修饰符] [修饰符] [返回值类型] [方法名称](){} //例 void start(){ System.out.println("汽车启动"); (return 返回值;) } }
java对象
-
对象:对象是类的一个实例,是以类为模板在内存中创建的实际存在的实例。
-
对象的创建和使用
-
对象的创建和使用
-
例:
Car bm = new Car(); /* Car bm:使用Car类作为类型(模板)声明一个变量bm. new Car():使用new + Car类 构造方法 创建对象. = :将右边创建的对象地址 赋给 左边的bm变量 可以使用bm变量访问对象中的成员变量和成员方法. */
-
同一类的每个对象有不同的成员变量存储空间。
-
同一类的每个对象共享该类的方法。
-
-
类和对象
-
总结类和对象
-
类是一类事物的抽象概念,是一个模型.
-
对象是由这个模型所创造的一个个具体存在的,实实在在存在的实例.
-
所以创建对象的过程也叫实例化对象.
现实生活中先有对象后有类,而编程时先设计类后创建对象.
-
变量分类
-
按照位置变量分为:
-
成员变量:
-
成员变量是定义在类中,方法体之外的变量。
-
成员变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。
-
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。
-
成员变量在创建对象的时候会从类中复制一份到对象中。
-
成员变量可以被类中方法、构造方法和特定类的语句块访问。
-
成员变量的作用范围为整个类体。
-
-
局部变量:
-
在方法、构造方法或者语句块中定义的变量被称为局部变量。
-
局部变量可以使用Java语言中任何一种数据类型。
-
局部变量在使用前必须初始化赋值。
-
变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
-
-
方法分类
-
成员方法:成员方法是定义在类中。
-
语法格式:
修饰符 返回值类型 方法名 ( 参数列表) { 方法体语句; (return; 返回值) }
-
构造方法:用来初始化对象的方法
-
构造方法
-
作用:用来初始化新创建的对象
-
特点:构造方法名与类名相同,且没有返回值,且不需要使用void修饰
-
在创建一个对象的时候,至少要调用一个构造方法。
-
每个类都有构造方法。如果没有显式地为类定义构造方法,
Java将会为该类提供一个默认构造方法,但是只要在一个Java类中定义了一个构造方法后,默认的无参构造方法即失效。
-
一个类可以有多个构造方法。
-
例:
public class Car {//在无参构造方法中为新创建的对象用默认值初始化赋值 String name; float price; String color; public Car(){ System.out.println("无参构造方法"); } public Car(String name,float price,String color{ //定义了有参构造方法为新创建的对象初始化赋值 this.name = name; this.color = color; this.price = price; System.out.println("有参构造方法"); } } /* 创建Car类的对象 Car car1 = new Car(); Car car2 = new Car(“宝马”,300000f,"蓝色"); */
方法的重载
-
方法的重载是指同一个类中具有相同的名字,但参数不同的多个方法。
-
例:
public class Car { String name; float price; String color; public Car(){ System.out.println("无参构造方法"); } public Car(String name,float price,String color){ this.name = name; this.color = color; this.price = price; System.out.println("有参构造方法"); } public Car(String name,String color,float price){ this.name = name; this.color = color; this.price = price; System.out.println("重载有参构造方法"); } public void run(){ System.out.print(name+"行驶 "); System.out.println("成员方法"); } public void stop(){ System.out.print(name+" 刹车 "); System.out.println("成员方法"); } } Car ms = new day11_2Car("玛莎",6000000f,"橙色"); Car dz = new day11_2Car("大众","黑色",300000f);
-
参数列表不同(三个方面不同)
-
数量不同
-
类型不同
-
顺序不同
-
-
调用时,会根据不同的参数列表选择对应的方法
-
构造方法和成员方法都可以重载
-
注意:方法重载跟方法的返回值类型没有任何关系