Java中的类和对象(上篇)

Java中的类和对象(上篇)

什么是类和对象

Java中一切皆对象**(一切围绕着对象进行,找对象,用对象,建对象)**

我们把具有相同属性和行为的一类对象抽象为类,使用类来描述这类对象的特征。

类 -> 抽象概念,人类,犬类,猫类 -> 无法具体到某个实体。

对象 -> 某类的一个实体,有了对象之后,这些属性就有了属性值,这些行为就有了相应。

世界上所有的的行为都归纳为对象 + 行为 + 对象

行为一定是某个对象发出的,然后作用于另一个对象或某些对象。

类是描述某一些项的统称,对象是这个类的一个实例而已。

这一类对象所具备的共同属性和行为(方法)都在类中定义。

类的创建

创建类的语法

class 类名称{

//field(实例属性,成员属性)

//行为(实例方法,成员方法)

}

在这里插入图片描述

在Java中一个源文件(*.java)只可以存在一个主类

public class**

类的命名使用有意义的大驼峰单词命名法

从第一个单词开始首字母就大写,多个单词都是首字母大写

class Person

class ChinaPerson

类中的成员变量都有默认值

类的引用

类相当与一个蓝图,一个范本,抽象的概念

有类之后我们就能根据类来产生一个抽象的对象

类名称 引用名称 = new 类名称();

Person per = new Person();

当产生一个类的对象之后,我们可以使用"."操作符来使用该对象的属性和方法

成员变量可以在类定义时赋值,成员变量就地初始化。

关于引用数据类型的特殊值null

null在Java中表示"空引用",只有名字没有任何堆内存中的地址,如果直接使用值为null的引用去操作"."任何属性或方法(成员变量和成员方法)都会报错。

类和对象

类:一组具有相同特征的对象的抽象,类中定义的所有该类对象所具备的的属性和方法

class Person{

//属性 ,方法,代码块

}

对象:某个类的的一个具体的实体,使用new关键词创建一个对象。

所有类都是引用数据类型,对引用类型来说,默认值是null。

NullPointerException -> 空指针异常,一定是使用了一个值为null的引用去访问属性或方法了。

static关键字

static关键字 -> 看见static关键字,本能反应,与对象无关

1、修饰属性,类属性,类对象

2、修饰方法,类方法,工具方法

3、static修饰代码块,静态代码块

4、static修饰内部类,静态内部类

1、修饰属性,类属性,类对象

当一个实例变量被static关键字修饰,他就表示该类的属性,该类的所有对象共用这个属性,所有对象的属性值大家都一样。

static修饰的属性在JVM方法区中储存,所有该类对象共用此属性

static修饰的属性,直接通过类名称就可以方法,无需通过对象访问

在Java中能否在一个方法的内部定义一个static变量?

不能!!!!!!!

方法中定义的变量全是局部变量,局部变量都在栈中储存,不可能定义了一个既在栈中又在方法中的属性。

final其实就是一个天然的共享概念,直接定义为static final即可。

这样的话,相当于所有对象共享此值,并且是唯一的

在类中定义常量,一般都会使用全局常量

static final 共同修饰

命名规则:所有字母全部大写,多个单词下划线分隔

static final String STUDENT_SCHOOL = "清华大学" ;

1.static变量称为类属性,在方法区中存储,该类的所有对象共享此变量。

2.若在类中定义了常量(定义时赋值),一般我们使用 static 和 final 共同修饰,全局常量

3.要使用类属性,我们通常直接通过类名称,属性名称

*不推荐使用对象来调用属性,不规范

4.null引用也可以调用

2、修饰方法,类方法,工具方法

static修饰的方法称之为类方法,工具方法(静态方法)

static修饰的方法也是通过类名称直接使用,没有对象就可以访问。

为什么主方法是静态方法呢?

因为主方法是程序的入口,如果主方法也是成员方法也就需要对象调用。

如果一个程序连入口都没有又从哪产生对象?

2.1所以程序从主方法执行,要用静态方法直接调用才能调用起来,无需产生对象。1.在静态方法只能调用静态方法或者静态属性,static家族之间可以互相调用,不能直接调用成员方法和成员属性,必须通过对象来调用。

2.2.在成员方法中既可以调用成员方法,也可以调用静态方法(此时都已经产生了对象,一定是可以访问静态域)

static与对象无关,表示一个类的属性和方法

1、static属性表示共享变量的概念,Person country,存在于方法区中,所有该类的对象共享此变量,直接用于类名称访问

2、static方法表示工具方法,直接通过类名称访问,与具体的某个对象无关,``Arrays.sort;Arrays.copyOf()`

3、static不能直接修饰一个外部类 -> 编译出错

静态方法中不能调用非静态方法或属性,但是可以访问静态变量和方法。

成员方法中既可以调用成员变量或方法,也可以访问静态变量和方法。

tatic方法表示工具方法,直接通过类名称访问,与具体的某个对象无关,``Arrays.sort;Arrays.copyOf()`

3、static不能直接修饰一个外部类 -> 编译出错

静态方法中不能调用非静态方法或属性,但是可以访问静态变量和方法。

成员方法中既可以调用成员变量或方法,也可以访问静态变量和方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值