第二章、类和对象

对象

对象和类的关系:类是创建对象的蓝图或原型。我们可以定义一个类,对真实对象的状态和行为建模

说明:可以触碰的为物理对象(重量,三维尺度,体积);不存在上述三种逻辑的伪逻辑事务(创意,计划,电子文档)

JAVA语言有哪些特征:封装、集成、多态、并发

定义变量或返回值的类型时:字符串用String、数值用int、当所写的类想被其他类调用的时候就可以用public(修饰)

关系:关联(组合、聚合)、依赖(使用)、继承、泛化、实现

静态状态/动态行为

1、静态状态【属性】:

语法格式:访问级别修饰符 特性修饰符 数据类型 属性名称 = 初始值
[数据类型和属性名称是必须要有的]

命名规范:
大坨峰:首字母都大写
小驼峰:第一个字母全小写,第二个首字母大写
静态属性/常量:字母全大写,词与词之间用 _ 分割

2、动态行为【方法】

语法格式:
访问级别修饰符 特性修饰符 返回值类型 方法名称(形式参数列表) {
方法体}

属性

解释:对象数据的描述

1、语法格式:
[访问权限修饰符] [修饰符] 数据类型 属性名 [=初值];

static 或 static final修饰符 修饰属性
属性的命名首字母小写(小驼峰)
特殊属性:常量 和 类属性
常量:属性名如果多个单词组成,则全用大写,并且用 _ 分割
常量的修饰符用两个字符修饰【static final】
类属性:修饰符用static

初始值必须是字面量
例如:【3.14...., ‘A’】

2、静态特征:
1、外部特征:视觉、听觉、触觉、味觉、嗅觉
2、内部状态
3、组成结构

3、行为:功能、效果、职责

构造器

1、语法:
[访问权限修饰符] 类名(形式参数列表) {方法体}

类名必须和类的名称(文件名)同名

2、与方法的区别:
——无返回值,连void都没有

——名称:方法是由自己定义,方法名最好不跟类名一样;构造器和类同名,如果类是public,那么三名统一(方法名称、类名、文件名)
——作用不一样:方法是执行一段代码;构造器是用来创建对象并初始化属性
——修饰符:方法可以使用,包括 static、final、abstract;构造器则不能使用,包括 static、final、abstract

3、构造器间的差别:
无参构造器:只有在该类没有声明任何构造方法的时候,才是默认存在的

4、构造方法重载:
在一个类中,如果有多个同名但是不同参的方法则可使用方法重载

创建一个构造器的快捷方式:
第一部:ALT+SHIFT+S
第二部:点击 Generate Constructor using Fields...

5、方法分类:
1、静态方法:有static的为静态方法;类方法、属于类;
静态方法的调用:类.方法名称【直接使用类调用】

2、非静态方法:没有static的为非静态方法;实例方法、属于对象的;
非静态方法的调用:对象.方法名称【先new一个对象再调用】

在使用构造器需要初始值设定:shift + alt + s

方法

对象的行为;(可以做的事情)

1、语法:

【访问权限修饰符】【修饰符】返回值数据类型 方法名(形式参数){
执行语句;
return 返回值;
}

2、形式参数:

有参方法
无参方法

3、return:

return;直接结束方法
return+值;结束并返回值

4、特性修饰符:

static / static final
有static final则表示有返回值方法

5、返回值数据类型:

1、有返回值方法:静态方法,类方法,属于类;int,return【直接结束方法】
2、无返回值方法:非静态方法,实例方法,属于对象的;void, return+值【结束并返回值】

6、方法重载:

数量不同,类型不同,顺序不同,和返回值类型无关。

1、概念:

在一个JAVA类中,如果有多个同名但是不同参数的方法,该情形就被称之为方法重载

2、调用方法:

静态调用方法:类名.方法名

不可将功能完全不一样的方法进行重载!

原则:方法名相同、参数不同【数量不同、类型不同、顺序不同】同一作用域

方法重载跟方法的返回值类型没有任何关系。也就是说,只有返回值不同的方法不能构成重载

7、静态/非静态方法:

静态方法:使用static属于静态方法;属于类的

非静态方法:实例方法;属于对象的;只要没有使用static都是属于对象的

对象

1、构造方法:

调用无参数的构造方法:
类名 对象名 = new 该类的构造方法()

调用有参数的构造方法:
类名 对象名 = new 该类的构造方法(参数1,参数2)

2、调用:

调用属性:对象.方法
【赋值,取值】

调用方法:对象.方法

3、调试程序时用来查看各属性的值(打印):

第一步:SHIFT+ALT+S
第二步:Generate toString()...

块/初始化器

块在类中声明,类似一个没有方法声明的方块体

1、静态块:

类加载时被调用一次,仅一次,与是否创建对象无关

解释:永远被第一个执行;并且只执行一次;在第一次创建对象时就可执行

静态块属于静态成员

语法格式:
static{
//任何符号语法的java代码
}

2、实例块:

每次调用构造方法前自动调用

语法格式:
{
//任何符合语法的JAVA代码
}

实例块属于非静态成员

非静态成员可以共享静态成员

内部类/嵌套类

1、成员内部类:

成员内部类可以共享外部类的成员【外部的无法调用,但是内部可以调用外部的;例:报警器和房屋的塌陷关系】

调用的方法:要先建立一个外部的,然后在外部的基础上再构建一个内部的

例:OuterA.Inner inner=new OuterA().new Inner();
这里原本要调用Inner(),但是需要先构建OuterA()的这样的一个外部
相当于我需要一个内脏,但是前提是有这样的一个人的建立,不然那都是空想

2、静态内部类型:

调用是需要加父类(外部类)

子子孙孙全部要写进去,并且有关键词static

3、匿名内部类:

一大段代码直接 new ,继承实现,唯独没有名字

4、局部内部类:

仅在方法体内进行【在下面创建内部类】

new时调用一个类

5、其中既有内部类又有内部接口
6、内部类、内部接口[class、interface]
7、非静态成员[private],超出该类体就无法调用

类的声明

语法格式:
【访问权限修饰符】 【修饰符】class 类名{
类体
}

1、访问修饰符:
protected、private只能作为内部类,即只能在 public 或 default 的内部;即类体

public
protected
default【不写访问修饰符时默认 default ,即直接不写即可】
private

2、修饰符:

final
synchronized【在类中不能使用】
abstract

支持的基础概念

特征:多态、继承、封装

抽象、类、对象、实例、方法、重载

案例

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复

    作者信息

    标签TAG

    相关文章