面向过程
面向过程:自顶向下的设计模式
特点:
分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现
以算法为核心
自顶向下设计,要求一开始对问题有很深的了解
将大问题转化位若干小问题来求解
表现形式:用函数来划分程序的基本单位
直接面对问题
优点:
易于掌握和理解,符合人们的思维习惯
对于需求明确、规模不大、变动较小的问题非常适合
缺点:
数据与操作分离开,对数据和操作的修改变得很困难
(注:操作不一定为数据专门设计,数据也可以通过其他方式改变)
数据的安全性得不到保障
程序架构的依赖关系不合理(注:程序的核心逻辑依赖于外延的细节)
对于需求不明确、规模大、变动大的问题很难解决
面向对象
特点
确定该问题由那些事物组成!先用类模拟出该事物
通过类间接的解决问题
自下而上设计,从问题的一部分着手,一点一点地构建出整个程序
表现形式:用类来作为划分程序的基本单位
优缺点
对于需求不明确、规模大、变动大的问题非常适合
对于需求明确、规模不大、变动较小的问题很累赘
类
把一类事物的静态属性和动态可以执行的操作组合在一起所得的这个概念就是类
类是抽象的,用来模拟一类事物,是一个概念
一旦被定义 ,类的概念就永远存在了
对象
类的一个个体
具体的,实实在在的事物(对于类来说)
生命周期是短暂的,会生成和消亡
内存分配
class A{
int i;
int j;
}
public class Test01{
public static void mian(String[] ages){
A aa = new A();//(A *)malloc(sizeof(A));
//new A();在堆中动态分配一块区域,被当作了A对象
//aa本身的内存是在栈中分配的
//堆中内存的地址赋给了aa
//aa指向堆中的内存,aa代表了堆中的内存
}
}
public static void main(String[] args){}主函数为什么带String[] args?
命令行传参,接受我们在cmd中输入的参数
public class Test01{
public static void main(String[] args){
System.out.println(args[0]);
System.out.println(args[1]);
System.out.println(args[2]);
}
}
/**
然后我们在cmd(也就是命令行)中输入
javac Test01.java
java Test01 7 77 777
输出结果为:
7
77
777
*/
访问控制符
在一个类的内部,所有的成员可以相互访问,访问控制符是透明的;访问控制符是针对外部访问而言的
private
只能在这个私有对象本身存在的类中访问这个对象,私有的成员不能在外部通过对象名的方法进行访问。0
public
可以通过外部访问方式访问的内部的public成员
protected
构造函数
class A{
private int i;
private int j;
//构造函数,当我们创建A类对象的时候就被自动执行,像函数又不是函数,所以称为构造函数
//如果你没写构造函数,就自动生成一个无参的,如果你写了,就不生成
//构造函数必须是public A(),可以重载,也就是参数类型和个数不一样的再几个public A();
public A(int a,int b){
i = a;
j = b;
}
public void show(){
System.out.println(i);
System.out.println(j);
}
}
public class Test01{
public static void main(String[] args){
A aa = new A(1,2);
aa.show();
}
}
构造函数,当我们创建A类对象的时候就被自动执行,像函数又不是函数,所以称为构造函数
如果你没写构造函数,就自动生成一个无参的,如果你写了,就不生成
public static void main(String[] args){
A aa = new A(1,2);
aa.show();
}
}
构造函数,当我们创建A类对象的时候就被自动执行,像函数又不是函数,所以称为构造函数
如果你没写构造函数,就自动生成一个无参的,如果你写了,就不生成
构造函数必须是public A(),可以重载,也就是参数类型和个数不一样的再几个public A();