(1)面向过程设计思想 分析出解决问题所需要的步骤,然后用函数把这些函数把这些步骤一步一步实现 以算法为核心 自顶向下设计,要求一开始必须对问题有很深的了解 将大问题转化为若干小问题来求解 表现形式:用函数来作为程序的基本单位 直接面向问题 (2)面向对象设计思想 确定该问题由那些事物组成,先用类模拟出该事物 通过类间接的解决问题 自下而上设计,从问题的一部分着手,一点一点地构建出整个程序 表现形式:用类来作为划分程序的基本单位 对于需求不明确、变动较大、规模很大的问题非常适合 对于“需求明确、规模不大、变动较小的问题”则显得十分累赘
把一类事物的静态属性和动态可以执行的操作组合在一起所得的这个概念就是类 类是抽象的,用来模拟一类事物,是一个概念 一旦被定义,类的概念就永远存在了
age是类的属性,也叫类数据成员,也叫字段,也叫域 shout是方法,也叫类的成员函数 shout方法可以直接访问同一个类中的age变量
类的一个个体 具体的,实实在在存在的事物 生命周期是短暂的,会生成和消亡
如果将对象比作汽车,那么类就是汽车的设计图纸
A.java文件
class A { int i; int j; } class TestMemo { public static void main(String[] args) { A aa = new A(); // (A *)malloc(sizeof(A)); // new A(); 在堆中动态分配一块区域,被当做了A对象 // aa本身的内存是在栈中分配的 // 堆中内存的地址赋给了aa // aa指向堆中的内存,aa代表了堆中的内存 // aa.i 代表:aa这个静态指针变量所指向的动态内存中的A对象的i这个成员 // aa.j 代表:aa这个静态指针变量所指向的动态内存中的A对象的j这个成员 aa.i = 50; aa.j = 80; System.out.println("%d, %d\n", aa.i, aa.j); // 50, 80 //int i = 10; } }程序执行过程
在类的成员前面加上private访问控制方,就能很好地保护类里面数据,提高成员的安全性,加了private之后,别的类就不能直接访问类的成员了,要通过他的set方法来访问
(1)类的访问控制符有4中:public、protect、default【默认】、private (2)在一个类的内部,所有的成员可以相互访问,访问控制符是透明的;访问控制符是针对外部访问而言。 (3)外部访问包括两种方式:1. 通过类名访问类内部的成员 2. 通过类对象名访问类内部成员 (4)public:可以通过外部访问方式访问类内部的public成员 (5)private:不可以通过外部访问方式访问类内部的private成员 (6)其他内容在继承和包中再讨论
总结:private修饰符(重点)
在一个类的内部,所有的成员可以相互访问,访问控制符是透明的在一个类的外部:通过 类对象名.私有成员名的方式是无法访问该对象中的私有成员的,这样写编译时会出错的!(1)特点:1. 函数名与类名是相同的;2. 不能有返回值;3. 可以有参数,也可以没有参数;4. 可以有多个 (2)说明:声明一个对象,系统首先为该对象分配内存,然后立即自动调用该对象的构造函数 (3)注意 任何一个类对象被生成时一定会调用该类的构造函数 无论一个类有多少个构造函数,生成一个对象时一定只会调用其中的某一个构造函数
(1)在一个类中可以定义多个函数名与类名相同但却有返回值的函数,返回值为void或int或double都可以,这些有返回值的函数只要能满足重载的特点,就可以同时存在一个类中,不过要注意:这些有返回值的函数(包括返回值为void的函数)都不是构造函数,都不会被类对象自动调用 (2)当然也可以定义多个没有任何返回值的函数,注意连void都不可以加,这些函数才是构造函数,无返回值的函数才会被对象自动调用 (3)如果定义了有返回值并且方法名与类名相同的方法,程序并不会报错,但容易产生歧义,所以强烈建议不要在构造方法前面加返回值
当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值
成员变量类型初始值byte0short0int0long0Lfloat0.0Fdouble0.0Dchar‘\u0000’booleanFalseAll reference bypeNull(1)如果在定义的时候不初始化,则它的值是系统自动分配好的默认值! (2)如果在定义的同时赋初值,则是可以的,也就是说该值是生效的。注意在C++中不可以 (3)如果在定义的同时赋初值,当然生效,但如果在构造函数中又改变了定义时赋的初值,则该数据成员最终的值就是构造函数中修改之后的那个值。因为系统会先执行定义时赋的初值,然后再执行构造函数中赋的初值
一旦编程者为类定义了构造方法,系统就不再提供默认的构造方法了