面向过程:c语言,开发中小型项目的效率很高。
面向对象:Java或C++等语言,适合大型开发场景。
面向过程思想:实现一个功能,看每个步骤怎么做,整体的过程是怎么样的。每一个步骤都需要自己亲力亲为。
面向对象思想:实现一个功能,不看重具体的过程和步骤,关心“谁能帮我做这件事”。
面向对象三大特征:封装性,继承性,多态性。
举例一.把数组转换成指定格式字符串
public class Demo01PrintArry {
public static void main(String[] args) {
int[] array = { 10, 20, 30, 40, 50 };
// 面向过程,每一个步骤细节都需要亲自处理
System.out.print("[");
for (int i = 0; i < array.length; i++) {
if (i == array.length - 1) {
System.out.print(array[i] + "]");
} else {
System.out.print(array[i] + ",");
}
}
// 面向对象,JDK中有个工具Arrays,可将这个工具将数组转换为指定格式字符串
// 我自己不做,找Arrays帮我把数组转换成指定格式字符串
String str = Arrays.toString(array);
System.out.println(str);
}
}
类与对象的关系:
现实中的事物分为两部分:
1.属性:事物的特征描述信息,“是什么”。
2.行为:事物的能力行动方案,“能做什么”。
面向对象中,类 是用来模拟现实事物的。
类中也有属性、行为两个组成部分,对象是类的具体实例;
类:是描述相同事物的共同特征的抽象。人类。
对象:是具体存在的实例,是真实的。实例==对 象。
1.类:抽象的,描述信息功能,不能实际使用。是一张电脑设计图。
2.对象:具体的,根据类创造出来的,可以实际使用。也叫做根据类,实例化对象。是一个真正的电脑。
类的定义:类 是用来模拟现实事物的代码手段,事物分为属性和行为。
1.成员变量(属性):在变量的位置直接定义在类中,在方法外,即为成员变量。
2.成员方法(行为):普通方法去掉static关键字,即为成员方法。
一个类通常不能直接使用,如果要使用这个类,通常都需要根据类创建一个真正的对象来使用。
如果根据类创建对象:
类名称 对象名 = new 类名称();
举例.定义一个类用来模拟现实事物“学生”。
//属性:姓名、年龄
//行为:吃饭、睡觉、学习
//对应到类中:
//成员变量(属性):Sting name、int age
//成员方法(行为):
//public void eat(){} 吃饭
//public void sleep(){} 睡觉
//public void study(){} 学习
public class Student {
// 成员变量
String name; // 姓名
int age; // 年龄
// 成员方法
public void eat() {
System.out.println("吃饭饭!");
}
public void sleep() {
System.out.println("睡觉觉!");
}
public void study() {
System.out.println("学习!");
}
}
public class Demo02Student {
public static void main(String[] args) {
// 创建了一个对象,是一个学生,对象名叫stu1
// 对象的名称stu1特叫做对象的“引用名”
Student stu1 = new Student();
Student stu2 = new Student();
Student stu3 = new Student();
Student stu4 = new Student(); // 更多学生对象
}
}
如何使用创建好的对象?
类当中已经定义好了两个组成部分:成员变量、成员方法
所以,根据类创建出来的对象也有这两个部分。
如何使用对象中的 成员变量?
- 对象名.成员变量名;
注意:对应成员变量来说,如果没有赋值,那么将会有一个默认值。例如int为0,String为null。
如何使用对象中的 成员方法?
- 对象名.成员方法名(参数);
总结:想用谁就点调用谁。
public class Demo03Student {
public static void main(String[] args) {
Student stu = new Student(); // 创建一个学生对象
System.out.println(stu.name); // 默认值null
System.out.println(stu.age); // 默认值0
// 改变成员变量的数据值
stu.name = "鹿晗";
stu.age = 20;
System.out.println(stu.name); // 鹿晗
System.out.println(stu.age); // 20
// 将对象当中的成员变量,交给name变量
String name = stu.name;
System.out.println(name);// 鹿晗
// 使用对象当中的成员方法
stu.eat(); // 调用吃饭的成员方法
stu.sleep();// 调用睡觉的成员方法
stu.study();// 调用学习的成员方法
}
}
3.定义一个类,用来模拟手机事物。
-
手机事物:
属性:品牌、价格、颜色
行为:打电话、发短信 -
对应到类中:
-
成员变量:
String brand; 品牌
double price; 价格
String color; 颜色 -
成员方法:
public void call(Sting who) {…} 打电话的方法
public void sendMessage() {…} 群发短信
public class Phone {
String brand; // 品牌
double price; // 价格
String color; // 颜色
public void call(String who) {
System.out.println("给" + who + "打电话");
}
public void sendMessage() {
System.out.println("群发短信!");
}
}
- 如何使用定义好的类?
类既是一种引用数据类型,使用起来可以分成三步:
1.导包
如果需要使用的目标类,和当前类(有main方法)位于同一个包之下,那么可以省略导包
否则需要使用import导包语句
2.创建
类名称 对象名 = new 类名称();
3.使用
使用成员变量:对象名.成员变量名
调用成员方法:对象名.成员方法名(参数)
public class Demo04PhoneOne {
public static void main(String[] args) {
//根据Phone类创建一个手机对象,名叫one
Phone one = new Phone();
//访问成员变量的默认值
System.out.println(one.brand);//null
System.out.println(one.color);//null
System.out.println(one.price);//0.0
one.brand = "苹果";
one.price = 8888;
one.color = "土豪金";
System.out.println(one.brand);//苹果
System.out.println(one.color);//土豪金
System.out.println(one.price);//8888.0
//调用成员方法
one.call("乔布斯");
one.sendMessage();
//将one中存储的地址值赋值交给two一份
//one跟two用的同一个对象,好比买卖二手房
Phone two = one;
System.out.println(two.brand);//苹果
System.out.println(two.color);//土豪金
System.out.println(two.price);//8888.0
two.brand = "三星";
two.price = 6666;
two.color = "星空粉";
System.out.println(two.brand);//三星
System.out.println(two.color);//星空粉
System.out.println(two.price);//6666.0
System.out.println(one.brand);//三星
System.out.println(one.color);//星空粉
System.out.println(one.price);//6666.0
}
}
类中的成分研究:
1.成员变量(Field:描述类和对象的属性信息的)
2.成员方法(Method:描述类或者对象的行为信息的)
3.构造器(Constructor :初始化一个类的对象并返回引用):构造方法就是构造器
4.代码块
5.内部类
注意:
只要不是这无大成分放在类下就会报错
构造器
作用:初始化一个类的对象并返回引用。
格式:
修饰符 类名(形参){
}
构造器初始化对象的格式:
类名 对象名称= new 构造器;
例如:
Student s1 = new Student();
一个类默认会自带一个无参数构造器,即使不写它也存在;
但是如果一个类,它写了一个构造器,那么默认的无参数构造器就被覆盖了! !