前提
Java->面向对象、面向切面、面向服务
C语言->面向过程
1. 面向对象编程和面向过程编程的区别
- 面向过程在解决问题的时候,会分析出解决问题的步骤,然后一步步的将这些步骤实现主要强调:我怎么去做。缺点:效率低。
- 面向对象在解决问题的时候,会将问题拆散成一个个对象,建立对象的目的不是为了完成某个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。主要强调:我找谁去做事情。优点:把复杂的问题简单化。把过程中的执行者变成了对象中的指挥者。
- 面向对象的三大特性:封装、继承、多态
2. 什么是对象
- 定义:在现实世界中实际存在的个体。万物皆对象。
具体的
3. 什么是类
- 定义:类是对象的特征(属性)和行为(方法)的抽象概念
抽象的
4. 类和对象的关系和区别
- 区别:类是对象的描述,是一个抽象概念;对象是一个实实在在存在的,是类的具体化,施例化是一个具体的概念。
- 关系:对象是类在现实世界中的个体实现,类是对象的抽象描述;
5. 如何定义类
修饰符 class 类名{
//类的属性
修饰符 数据类型 属性名;
//类的方法(void无返回值)
修饰符 void 方法名(){
//方法体
}
}
package com.m.demo;
public class People {
//属性
public char sex;
public String name;
public double height;
public int age;
// 方法
public void information() {
System.out.printf("性别:%c\t姓名:%s\t身高:%.2f\t年纪:%d",sex,name,height,age);
}
public void eat() {
System.out.print("吃饭");
}
public void sleep() {
System.out.printf("睡觉");
}
}
6. 如何通过类创建对象
- 创建对象
类名 对象名=new 类名();
- 给对象的属性赋值
//获取属性
对象名.属性;
//属性赋值
对象名.属性名=值;
- 调用对象方法
package com.m.demo;
public class Test3 {
public static void main(String[] args) {
People p=new People();
p.age=13;
p.height=1.5;
p.name="ABC";
p.sex='男';
p.information();
p.eat();
p.sleep();
}
}
7. 对象的内存图解
- 栈内存(stack):连续的存储空间,一般存储的是局部变量。(方法中定义的变量,在创建对象时不会默认初始化)
- 堆内存(heap):不连续的内存空间,一般存储是new出来的对象,是类的实例
- 方法区(method):在堆内存中,存储的是类的代码信息。
- 基本数据类型在栈内存中,引用数据类型在堆内存中
- 8个基本数据类型
- 成员变量:方法之外定义的变量,创建变量时,会默认初始值(系统自动默认)。
8. UML类图
统一模型构建语言,用来对面向对象的系统产品进行说明,可视化,编辑文档的统一语言。
修饰符说明:
public:+
protected:#
default:~
private:-
修饰符 属性名:属性类型[=默认值]
[]:表示可有可无
9. 包的作用和定义方式
对代码进行分类,分模块开发,相当于文件夹。
规则:反域名法。
10. 对象数组
数据类型[] 数组名=new 数据类型[长度];
package com.m.demo;
import java.util.Arrays;
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) {
People [] p=new People[3];//声明
Scanner s=new Scanner(System.in);
for(int i=0;i<p.length;i++) {
System.out.printf("请输入第%d个人的信息\n",i+1);
System.out.printf("年纪:");
p[i]=new People();//创建
p[i].age=s.nextInt();
System.out.printf("身高:");
p[i].height=s.nextDouble();
System.out.printf("姓名:");
p[i].name=s.next();
System.out.printf("性别:");
p[i].sex=s.next().charAt(0);
}
}
}