Java面向对象——类和对象

java面向对象的三大特征:封装、继承和多态。

类与对象

所有类是引用数据类型。

对于一个类定义而言,包含三种最常见的成员:构造器、属性、方法,三

种成员可以定义多个或零个,当为零个时,定义的是一个空类。

类里面各成员之间的定义顺序没有任何影响,各成员之间可以相互调用。

一、定义类

1,定义类的语法:

[修饰符] class 类名

{

零个到多个构造器定义...

零个到多个属性...

零个到多个方法...

}

修饰符:可以是public、final等

类名:是合法的标识符即可,但从程序的可读性方面考虑,

Java类名必须是由一个或多个有意义的单词连缀而成,

每个单词首字母大写,其他字母全部小写,单词与单词之间

不要使用任何连接符.

属性:用于定义该类或该类的实例所包含的数据

方法:用于定义该类或该类的实例的行为特征或功能实现;

构造器:用于构造该类的实例,Java语言通过new关键字来调用构造器,

从而返回该类的实例。

构造器是一个类创建对象的根本途径,若一个类没有构造器,

这个类就无法创建实例。如果程序员没有为一个类编写构造器,

则系统会为该类提供一个默认的构造器,一旦程序员为一个类

提供了构造器,系统将不再为该类提供构造器。

2,定义属性的语法格式:

[修饰符] 属性类型 属性名[=默认值]

修饰符:可以省略,也可以是public、protected、private、static、final,

其中public、protected、private三个最多只能出现一个,也可以与

static、final组合起来修饰属性;

属性类型:可以是java语言允许的任何数据类型,包括基本数据类型

和引用数据类型;

属性名:只要是一个合法的标识符即可,但若可读性角度来说:

属性名应该是由一个或多个有意义的单词连缀而成,第一个单词

首字母小写,后面每个单词首字母大写,其他字母全部小写,

单词与单词之间不需使用任何分隔符。

默认值:定义属性还可以定义一个默认值

3,定义方法的语法格式:

[修饰符] 方法返回值类型 方法名(形参列表)

{

//由零条到多条可执行性语句组成的方法体

}

修饰符:可以省略,也可以是public、protected、private、static、final、abstract,

其中public、protected、private三个最多只能出现一个,abstract和final最多只能

出现其中之一,它们可以与static组合起来修饰属性;

方法返回值类型:返回值类型可以是java语言允许的任何数据类型,包括基本类型和引用类型;

若声明了返回值类型,则方法体内必须有一个有效的return语句,

该语句返回一个变量或一个表达式(变量或表达式类型必须与此处

声明的类型匹配);若一个方法没有返回值,必须使用void来声明

没有返回值。

方法名:与属性名规则基本相同,通常建议方法名以英文字的动词开头。

形参列表:用于定义该方法可以接受的采纳数,由零组或多组

“参数类型 形参名”组合而成,多组参数之间以英文逗号(,)隔开,

形参类型和形参名之间英文空格隔开。

注意:方法体里多条可执行性语句之间有严格的执行顺序,排在方法体前面的语句总是先执行,

排在方法体后面的语句总是后执行。

4,static

static是一个特殊关键字,它可用于修饰方法、属性等成员。

static修饰的成员表明它是属于这个类共有的,因此通常把static修饰的

属性和方法称为类属性和类方法。

通常把不使用static修饰的属性和方法也称为实例属性、实例方法。

静态成员不能直接访问非静态成员。

5, 定义构造器的语法格式如下:

[修饰符] 构造器名(形参列表)

{

//由零条到多条可执行性语句组成的构造器执行体

}

修饰符:可以省略,也可以是public、protected、private其中之一

构造器名:必须与类名一致

形参列表:和定义方法形参列表的格式完全相同。

6,对象的产生和使用

创建对象的根本途径是构造器,通过new关键字来调用某个类的

构造类即可创建这个类的实例。

//构建对象方式一:

Person p1;

p1=new Person();

//构建对象方式二:

Person p2=new Person();

//调用p2的name属性,并为该属性赋值

p2.name="小鱼";

p2.say(p2.name);

p2.say("调用该方法必须为形参指定一个值");

7,代码示例:

Person类:

/*

* 定义类

* */

public class  Person

{

/*

* 定义属性

* */

public String name="";

public int age;

public int foo;

/*

* 定义方法

* */

public void say(String content)

{

System.out.println(content);

}

/*

* 定义构造器

* */

public Person()

{

//在构造器里面定义一个foo变量

int foo=0;

this.foo=6;

}

//程序运行唯一入口

public static void main(String args[])

{

/*

* 对象的产生和使用

* 创建对象的根本途径是构造器,通过new关键字来调用某个类的

* 构造类即可创建这个类的实例。

* */

//构建对象方式一:

Person p1;

p1=new Person();

//构建对象方式二:

Person p2=new Person();

//调用p2的name属性,并为该属性赋值

/* 若访问权限允许,类里定义的方法和属性

* 都可以通过类或类的实例来调用。

* 类或实例访问属性的方法是:类.属性|方法,或者实例.属性|方法

* static修饰的方法和属性,既可以通过类来调用,也可以用实例调用

*

* */

p2.name="小鱼";

p2.say(p2.name);

p2.say("调用该方法必须为形参指定一个值");

}

}

二、对象、引用和指针

Person p=new Person();

这行代表创建了两个Person实例,也被称为Person对象,这个Person对象被赋给p变量。

引用性变量里面存放的仅仅是一个引用,它指向实际的对象。

Person类型的变量实际上是一个引用,它被存放在占内存中,它指向实际的Person对象;而真正的Person对象则存放在堆内存中。

将Person对象赋给一个引用变量的示意图:

栈内存里的引用变量并未真正存储对象里的属性数据,对象的属性数据实际上存放在对内存中。

而引用型变量仅仅只是指向该堆内存里的对象。

当一个对象被创建成功后,这个对象将保存在堆内存中,Java程序不允许直接访问堆内存中的对象,

只能通过该对象的引用操作该对象。

如果堆内存里的对象没有任何变量指向该对象,那么程序将无法再访问该对象,这个对象也就变成

了垃圾,Java的垃圾回收机制将会回收该对象,释放该对象所占的内存区。

若希望通知垃圾回收机制回收某个独享,只需切断该对象的所有引用和它之间的关系即可。

也就是把这些引用变量赋为null即可。

三、对象的this引用

1,对象的this引用

Java提供了一个this关键字,this关键字是一个对象的默认引用。

this关键字总是指向调用该方法的对象。

2, 根据this出现的位置不同,this作为对象的默认引用有两种情形:

构造器中引用该构造器执行初始化对象

在方法中引用调用该方法的对象

this关键字的最大作用是让类中一个方法,访问该类的另一个方法或属性。

this可以代表任何对象,当this出现在某个方法体中时,它所代表的

对象是不确定的,但它的类型是确定的,它所代表的对象只能是当前类,

谁在调用这个方法,this就代表谁。

3,static修饰方法中不能使用this引用。

4,注意:

大部分时候,普通方法访问其他方法、属性时无须使用this前缀,

但如果方法里有个局部变量和属性同名,但程序又需要在该方法里

访问这个属性时无须使用this前缀。

5,代码示例

Dog 类

public class Dog {

//定义一个名为foo的属性

public int foo;

//构造方法

public Dog()

{

//在构造器里定义一个foo变量

/*

* this引用也可以用于构造器中作为默认引用,

* this在构造器中引用的是该构造器进行初始化的对象。

* */

int foo=0;

this.foo = 6;

}

//定义一个jump方法

public void jump()

{

System.out.println("正在执行jump方法");

}

//定义一个run方法,让run方法调用jump方法

public void run()

{

//        Dog d=new Dog();

//        d.jump();

//写成这样才是合适的

//Java允许对象的一个成员直接调用另一个成员,可以省略this前缀。

//        this.jump();

//所以可以这样写。

jump();

System.out.println("正在执行run方法");

}

public static void main(String[] args)

{

Dog d=new Dog();

//执行run方法

d.run();

//所有使用Dog创建的对象的foo属性都将被设为6,

//所以下列的代码将输出6

System.out.println(new Dog().foo);

}

}

时间: 2025-01-12 02:48:56

Java面向对象——类和对象的相关文章

Java面向对象-类与对象

Java面向对象-类与对象 类与对象的关系 我们通俗的举个例子,比如人类是一种类,张三这个人就是人类的具体的一个个体,也就是java中的对象:这就是一个类与对象的关系: 类的定义 下面看实例 类的创建和使用 看下面实例 我们在com.java1234.chap03.sec01包下新建一个Person类 1 package com.java1234.chap03.sec01; 2 3 /** 4 * Person类 文件名和类名必须一致 5 * @author user 6 * 7 */ 8 pu

JAVA 面向对象 类和对象

本页面更新日期: 2016年07月17日 前言 Java 是面向对象的程序设计语言, Java 语言提供了 定义类, 成员变量, 方法 等基本功能. 类 可以被认为是一种自定义的数据类型. 可以使用类来 定义变量,所有使用类定义的变量都是 引用变量. 它们将会引用到 类的对象. 类用于描述客观世界里 某一类对象的共同特征. 而对象则是 类的具体存在. Java 使用 类的构造器 来创建该类的对象. Java 也支持面向对象的三大特征: 封装/继承/多态 Java提供了 private / pro

Java面向对象---类与对象的关系

类是对某一类事物的描述,是抽象的.概念上的意义.对象是实际存在的该类事物的每一个个体,也被称为实例. 创建对象:包括声明对象和实例化对象 Person person;//声明 person = new Person();//实例化 创建对象内存划分 1.声明开辟一个栈空间 2.实例化开辟一个堆内存空间 3.声明指向实例化:栈空间的person指向堆空间的实例化

Java面向对象——类的成员

Java面向对象——类的成员 摘要:本文主要介绍了类的常见成员. 属性 属性称为成员变量,一般来讲不用赋值,因为有默认值,另外显式赋值没有意义会导致所有由此类创建对象都是此值. 默认值 Boolean类型成员变量的默认值是false. Int类型成员变量的默认值是0. Double类型成员变量的默认值是0.0. String类型成员变量的默认值是null. Char类型成员变量的默认值是\u0000. 类变量 类变量也称为静态变量,在类中以static关键字声明,但必须在方法构造方法和语句块之外

学习java随笔第七篇:java的类与对象

类 同一个包(同一个目录),类的创建与调用 class Man{ String name; void GetMyName() { System.out.println(name); } } public class Person { public static void main(String arges[]) { Man m=new Man(); m.name="小黄"; m.GetMyName(); } } 运行结果 不同的包(不同目录目录),类的创建与调用 package Peo

C#编程语言与面向对象——类与对象

由于ASP.NET技术是全面向对象的,因此,要掌握这一技术,必须具备有扎实的面向对象理论基础 使用C#编程,所有的程序代码几乎都放在类中,不存在独立于类中之外的函数,因此,类是面向对象编程的基本单元 在绝大多数面向对象语言中,一个类都可以包含两种成员:字段和方法.字段与方法这两个概念是面向对象理论的术语,是通用与各种面向对象语言的.而在各种的具体面向对象语言(比如C#)中,可以简单地理解: 字段及变量,方法及函数. C#编程语言与面向对象--类与对象

关于Java构造类与对象的思考

简单记录一下Java构造类与对象时的流程以及this和super对于特殊例子的分析. 首先,接着昨天的问题,我做出了几个变形: Pic1.原版: Pic2.去掉了T.foo方法中的this关键字: Pic3.在原版的基础上抹掉了B.foo方法: Pic4.抹掉了原版的B.foo方法,同时去掉了T.foo方法中的this关键字: 这四个图全方位地对this和super两个关键字的有无进行了测试,测试结果表明:这些版本的程序的运行结果都一样... 在这里,还是插一张流程图: 首先说一下super关键

第31节:Java基础-类与对象

前言 Java基础-类与对象,方法的重载,构造方法的重载,static关键字,main()方法,this关键字,包,访问权限,类的继承,继承性,方法的重写,super变量. 方法的重载:成员方法的重载和构造方法的重载 方法的重载 在一个类中可以有多个方法具有相同的名字,但是这些方法的参数个数不同,或参数类型不同,即为方法的重载. class Demo{ // one void dashu(String name){ System.out.println(name); } // two void

黑马程序员-Java基础-面向对象-类和对象、封装、构造函数、this、static、饿汉式&懒汉式

第一讲  面向对象概念 1.  定义 相对于与面向过程而言的,将功能封装进对象,我们只关心具备了该功能的对象,而不用关注对象的具体细节. 面向对象的特点:使复杂问题简单化.我们只关心什么对象能处理什么事情,而不用关心具体的实现细节. 2.  面向对象特征 封装.继承.多态. 第二讲  类和对象的关系 1.  概述 类就是:对现实生活中事物的描述,可以是实体的事物也可以是一件事等: 对象是:是某类事物的实例,实实在在存在的个体: 映射到java中,描述就是class定义的类. 具体对象就是对应ja