首页 > 代码库 > java_第二次笔记
java_第二次笔记
面向对象
面向过程:主要面向动作一步一步走。
面向对象思想:强调的是对象(实体)
有对象用对象,没对象造对象,并且维护对象之间的关系。
封装,继承,多态
哪个对象对方法最清楚,方法归哪个对象。
人开门,开这个方法属于门。
--> 人 调用了 门 开的方法。
怎么描述:
对于事物的描述通常只关注两方面。 一个是属性,一个是行为。
只要明确该事物的属性和行为定义在类中即可。
对象:其实就是该类事物实实在在 存在的个体。
类与对象之间的关系?
类:事物的描述。
对象:该类事物的实例。new来创建。
定义类,就是定义类的成员。
成员包括 成员变量 成员函数。
变量->属性
函数->行为
成员变量和局部变量的区别:
1.成员变量定义在类中,整个类都可以访问。
局部变量定义在函数,语句,代码块中,只在所属的区域有效。
2.成员变量存在堆内存的对象中。
局部变量存在栈内存的方法中。
3.成员变量 与对象同老。
局部变量 区域
匿名对象:
new car; //简写
new car().run(); //只进行一次调用
封装 Encapsulation
隐藏对象的实现细节
仅对外提供公共访问方法
private 私有的
私有东西只在本类中有效
构造函数
没有修饰,没有返回,与类同名
在new 对象的时候会调用构造函数。
所以在构造函数里可以用于初始化对象。
//**在构建创造对象时调用的函数->可以给对象进行初始化
一个类中,如果没有定义过构造函数,该类会有一个默认的空参数构造函数。
如果在类中定义了指定的构造函数,默认的构造函数就没有了。
class demo
{
demo(){} //默认存在的
}
没有的话编译器 自动加上的构造函数?
构造函数和一般函数的区别。。。
构造函数在对象创建时,就会调用与之对应的构造函数,对对象进行初始化。
一般函数:对象创建后,需要函数功能时才调用。
构造函数在对象创建时只调用一次。
一般函数可被调用多次。
什么时候定义构造函数;
构造函数的重载:
在class类里面,自定义多个不同的构造函数,函数名相同,入参个数不同
或者入参类型不同。
在new新的对象时,按入参的不同,调用不同的构造函数。
this 这个对象 当前对象,在堆内存
给成员变量 加 this
this:就是所在函数所属对象的引用。
哪个对象调用了this所在函数。this就代表哪个对象。
this 指的就是堆对象的地址
static 关键字,修饰符
静态修饰的数据,被对象共享的。
可以被类名调用//不需要对象也可以
static特点:
1.static 是一个修饰符,用于修饰成员。
2.被static修饰的成员,被所有的对象共享。
3.static优先于对象存在,因为static成员随着类的加载就已经存在了。
4.static修饰的成员可以直接被类名所调用。类名.静态成员
5.static修饰的数据是共享数据,对象中的存储的是特有数据。
静态变量 区别于 成员变量
成员变量==实例变量
静态变量==类变量
区别:
两个变量的生命周期不一样:
成员变量随着对象的创建而存在,随着对象的被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
(虚拟机结束了类就消失了)
不建议把所以数据定义成 类变量。生命周期太长。
权衡~~~~
调用方式不同:
成员变量只能被对象调用
静态变量可以被对象调用,也可以用类名调用。
(直接用类名用,比较清晰,能看出来是静态成员)
别名不同:
成员变量也称为 实例变量。
静态变量称为类变量。
数据的存储位置不同:
成员变量的数据存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量的数据存储在方法区(数据区,共享区,共享数据区)
方法区的静态区,也称为共享数据区。
(不在栈里面,方法消失就消失了)
//类变量和方法都在方法区
静态使用注意事项:
静态方法只能访问静态成员。
非静态 可以访问静态和非静态。
静态方法中不可以使用this或者super关键字。
主函数是静态的。
主函数特殊点:
格式固定
被jvm识别调用。
java_第二次笔记