类与对象学习总结
对象:是具体的事物 xiaoming xiaohong, Object, instance(实例)。以后我们说某个类的对象,某个类的实例。是一样的意思。
类:class。是对对象的抽象(抽象à抽出象的部分)Person
先有具体的对象,然后抽象各个对象之间象的部分,归纳出类通过类再认识其他对象。
生活案例
– 类是一个图纸 对象是根据该图纸制造多个实物
– 类是一个模具 对象是使用模具制造的多个铸件(月饼模子 )
– 类是上海大众汽车,对象就是大家购买的一辆辆具体上海大众汽车
对象和类的关系:
– 特殊到一般,具体到抽象。
– 类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
– 类是用于描述同一类形的对象的一个抽象的概念,类中定义了这一类对象所应具有的静态和动态属性。
– JDK提供了很多类供编程人员使用,编程人员也可定义自己的类。
如何定义类:
修饰符 class 类名{
//属性(成员变量)
修饰符 数据类型 变量名;
//方法
修饰符 返回值类型 方法名(参数列表){
方法体;
[return 返回值]
}
}
创建对象
– 类名 对象名 = new 类名();
– Person p1=new Person();
– 调用类的属性和方法
– 对象名.成员变量
局部变量和成员变量
区别
– 声明位置不同 类中 方法中
– 作用范围不同: 当前类的方法 当前方法
不同的方法中即使有同名的局部变量,没有关系,互不影响,建议相同
– 内存存放的位置的:栈内存中 堆内存中
– 成员变量有默认值;局部变量没有默认值
引用类型
Java 语言中除基本类型之外的变量类型都称之为引用类型。
Java中的对象和数组是通过引用对其操作的.
– 引用可以理解为一种受限的指针
– 指针是可以进行与整数做加减运算的,两个指针之间也可以进行大小比较运算和相减运算。引用不行,只能进行赋值运算。
– 引用就是一个变量或对象的别名(引用的本质是一个对象);指针是一个段内存空间的地址(指向存储一个变量值的空间或一个对象的空间)
内存分析
栈:
– 存放:局部变量
– 先进后出,自下而上存储
– 方法执行完毕,自动释放空间
堆:
– 存放new出来的对象
– 需要垃圾回收器来回收
方法区:
– 存放:类的信息(代码)、 static变量、字符串常量等.
构造器定义: constructor 构造方法
– 一个在创建对象时被自动调用的特殊方法。
– 构造器作用:
– 为对象进行初始化(成员变量)工作。
– 构造器是一种特殊的方法:
– 构造器的方法名必须和类名一致!
– 构造器虽然有返回值,但是不能定义返回类型(返回值的类型肯定是本类),不能在构造器里调用return。
– 通过new关键字调用!!
– 如果我们没有定义构造器,则系统会自动定义一个无参的构造方法。如果已定义则编译器不会添加无参数构造方法!
– 与普通方法一样,构造方法也可以重载
this关键字:
– this表示的是当前对象本身,
– 更准确地说,this代表当前对象的一个引用。
普通方法中使用this。
– 区分类成员属性和方法的形参.
– 调用当前对象的其他方法(可以省略)
– 位置:任意
构造方法中使用this。
– 使用this来调用其它构造方法
形参和实参
– 定义方法的参数是形式参数
– 调用方法的参数是实在参数
– 调用方法时要求参数个数相同,类型兼容
– 参数传递
– 基本数据类型的参数传递
无法通过方法调用改变变量的值
– 引用数据类型的参数传递
可以通过方法调用改变变量的值
static 关键字
◦ 它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化,
◦ 对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!
◦ 可以使用”对象.类属性”来调用。不过,一般都是用“类名.类属性”
◦ static变量置于方法区中!
◦ 用static声明的方法为静态方法
◦ 不需要对象,就可以调用(类名.方法名)
◦ 在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。
◦ 静态方法不能以任何方式引用this和super关键字
静态初始化块
如果希望加载后,对整个类进行某些初始化操作,可以使用static初始化块。
类第一次被载入时先执行static代码块;类多次载入时,static代码块只执行一次;Static经常用来进行static变量的初始化。
是在类初始化时执行,不是在创建对象时执行。
静态初始化块中不能访问非static成员。
pakage 包
为什么需要package?
– 为了解决类之间的重名问题。
– 为了便于管理类:合适的类位于合适的包!
package怎么用?
– 通常是类的第一句非注释性语句。
– 包名:域名倒着写即可,再加上模块名,并与内部管理类。
注意事项:
写项目时都要加包,不要使用默认包。
com.gao和com.gao.car,这两个包没有包含关系,是两个完全独立的包。只是逻辑上看起来后者是前者的一部分。
Java中常用的包
java.lang:包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。
java.awt:包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
java.net:包含执行与网络相关的操作的类。
java.io:包含能提供多种输入/输出功能的类。
java.util:包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。
以上就是学习笔记总结