//面向过程的思想就是只有动词,面向对象的思想就是名词+动词
冰箱.打开
冰箱.存储
冰箱.关闭
//名词提炼法
//面向对象的三个特征:封装,继承,多态
(*)类和对象的关系
类:对事物的描述(属性,行为)(成员变量,成员方法)
对象:事物实体(值,具体做法)
/*
(*)(*)Java中没有string关键字,而String是字符串类
(*)(*)char[]和String互转:
*/
//对象.对象成员
//每个new都生成一个新对象,并在堆内存中分配空间
(*)成员变量和局部变量
成员变量作用于整个类中,局部变量作用于函数中,或者语句中。
成员变量在堆内存中,因为对象的存在,才在内存中存在。局部变量存在于栈内存中。
//匿名对象:
使用方式一:当对象的成员变量或方法只调用一次时,可以用匿名对象来完成,这样写比较简化
使用方式二:可以将匿名对象作为实际参数进行传递----------如下图所示
(*)封装:指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处--将变化隔离,便于使用,提高重用性,提高安全性。
原则--将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。
//函数就是最小封装体,类也是封装,包也是封装,框架是封装。
//访问修饰符:private同类中可以访问,被private私有化的类成员不能被对象调用
(*)私有仅仅是封装的一种表现形式
(*)构造函数:new的过程就是调用类的构造函数,分配堆内存空间,给成员变量赋初始值,没有赋值就是默认值
//当一个类中没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数。
//当系统中定义构造函数时,系统不会默认一个空参数构造函数。
(*)new ,(Person p = new Person(10,"abc");)意思就是在堆内存中new一个新的Person类型空间,并把()中的参数值,赋于相对应的成员变量。()无参数就是赋默认值。
//构造函数只在new的时候运行一次
//构造代码块:给对象进行较统一格属性的初始化,优先于构造函数执行
(*)this-关键字:就是这个对象(实例),调用方法的对象(实例)。代表它所在函数所属对象的引用。
//构造函数间的相互调用用this,this()需在第一行