类与对象学习总结

对象:是具体的事物 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:包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。

以上就是学习笔记总结

 

posted on 2017-04-11 11:18  流逝之羽  阅读(230)  评论(0编辑  收藏  举报

导航