Java学习——类和对象

        Java是一门面向对象的语言,其重要的一个思想就是“万物皆对象”。类是java的核心内容,它是一种逻辑结构,定义了对象的结构,可以由一个类得到众多相似的对象。

        类实际上是定义一个模板,而对象是由这个模板产生的一个实例。

类的一般形式:

class 类名{

类型 实例变量名;

类型 实例变量名;

。。。。。。

类型 方法名(参数){

方法内容

。。。。。。

注意:在JAVA中是允许把许多类的声明 放在一个JAVA文件中的,但是这些类只能有一个类被声明为public,而且这个类名必须和Java文件名相同。

private:只有本类可见。

protected:本类、子类、同一包的类可见。

默认(无修饰符):本类、同一包的类可见。

public:对任何类可见。


类的实例变量和方法:


有返回值的方法:


带参数的方法:

类型 方法名(参数类型 参数1,参数类型 参数2...){

方法体


测试Human类:


测试结果:


方法的重载:Java中支持两个或者多个同名的方法,但是它们的参数个数和类型必须有区别。当调用这些同名的方法时,java会根据参数的个数和类型来确定到底调用的是哪一个方法。


对象的创建和使用:

创建对象:

(1)

Human wangming;     声明一个Human类的变量wangming;

wangming=new Human();   通过new运算获得一个对象实例并为其分配内存,获得对象实例赋值给wangming。

(2)

Human wangming=new Human();  这个方法和上面两句的效果一样

(3)调用方法是通过“.”运算符实现的   ,如:wangming.eat();



对象之间也可以进行赋值运算

构造函数:Human zhangsan=new Human();实际上是调用了一个方法,不过这个方法是系统自带的方法,由于这个方法被用来构造对象,所以把它称为构造函数。它的作用是生成对象,并对对象的实例变量进行初始化。系统自带的默认构造函数把所有的数字变量设为0,把所有的boolean型变量设为false,把所有的String变量都设为null。构造函数有一个很明显的特点是它的名字必须跟类名相同,并且没有返回在值类型。


通过编写带有参数的构造函数可以把值传递给对象的变量:



构造函数的重载:(这个与java不再提供默认的构造函数不矛盾吗?)



回答上面的疑问:(不注释的时候下面那句不会报错)


构造函数中调用其它的构造函数:



Static关键字:

静态变量:普通的各种变量都是属于某个对象的,静态变量跟对象是没有关系的,跟它相关联的是类而不是对象。(static变量对每个类都只有一份存储空间,非static变量对类的每个对象有一个存储空间)

以下是个失败的例子,最后一个s2.staticint理论应该等于1;


规范的静态变量的访问方法:1、类名.变量名(首选)    


规范的静态变量的访问方法:2、也可以通过对象去引用静态变量,如:对象名.静态变量

静态方法的访问:1、类名.方法名(首选)       2、对象来引用某个静态方法  对象名.静态方法

静态方法的重要用法是:不创建任何对象的前提下就可以调用它,如main方法

静态方法不能直接访问非静态变量。

非静态方法可以直接访问静态变量。

mian函数也是一个静态方法



静态常量:

定义:public static final int X=123;该变量X在程序中是不可以改变的,不能通过赋值改变它的值。

静态变量、静态常量的初始化是调用 构造函数之前完成的。


参数传递:

参数传递分为传值和传地址,传值:把参数的值直接传递给方法,而传地址是给方法提供参数的地址。Java的参数传递方法都为传值调用,但涉及到对象的传递时,比较复杂.

基本类型的参数传递:


this关键字的用途:

在构造函数中调用其他的构造函数。

在方法中获得调用该方法的对象。

对象类型的参数传递:





交换前后结果一样。

包:

导入一个包后就可以使用该包中的类了。

类的成员变量:在类中声明的变量;类的局部变量:在类的方法中声明的变量


细节问题注释已经写的比较清楚了,这里不在赘述,只是总结一下,其实this主要要三种用法:

1、表示对当前对象的引用!

2、表示用类的成员变量,而非函数参数,注意在函数参数(局部变量)和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。

3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!

还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!

看下图中颜色不一样:第一张图表示的是成员变量;第二张表示的是局部变量



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值