简单介绍Java中的对象与类

类是构造对象的模板或蓝图,由类构造对象的过程称为创建类的实例。

对象由三个主要特征:

1.对象的行为

2.对象的状态

3.对象的标识

同一个类的所有对象实例,由于支持相同的行为而具有家族式的相似性,对象的行为是用可调用的方法来定义的。每个对象都保存着描述当前状况的信息,这就是对象的状态。对象的状态可能会随着时间而发生改变,但这种改变不会是自发的。对象状态的改变必须通过调用方法实现。

但是对象的状态并不能完全描述一个对象。每个对象都由一个唯一的标识。作为同一个类的实例,每个对象的标识总是不同的,状态也往往存在差异。

类之间由三种常见的关系:

依赖 聚合 继承

依赖即“user-a”关系,是一种最明显的 最常见的关系,如果一个类的方法使用或操纵另一个类的对象,我们就说一个类依赖于另一个类。

聚合即“has-a”关系,例如一个Order对象包含一些Item对象。包容关系意味着类A的对象包含类B的对象。

继承即“is-a”关系,表示一个更特殊的类与一个更一般的类之间的关系。

例如创建一个简单的类来理解下 Java 中类的定义:

public class Dog { String breed;

int size;

String colour;

int age;

void eat() {

} void run() {

} void sleep(){

} void name(){

}

}

一个类可以包含以下类型变量:

  • 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
  • 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
  • 类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。

一个类可以拥有多个方法,在上面的例子中:eat()、run()、sleep() 和 name() 都是 Dog 类的方法。

构造方法

每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。

在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

下面是一个构造方法示例:

public class Puppy{ public Puppy(){

} public Puppy(String name){

// 这个构造器仅有一个参数:name

}

}

创建对象

对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字 new 来创建一个对象。
  • 初始化:使用 new 创建对象时,会调用构造方法初始化对象。

下面是一个创建对象的例子:

public class Puppy{
   public Puppy(String name){
      //这个构造器仅有一个参数:name
      System.out.println("小狗的名字是 : " + name ); 
   }
   public static void main(String[] args){
      // 下面的语句将创建一个Puppy对象
      Puppy myPuppy = new Puppy( "tommy" );
   }
}

Java 包

包主要用来对类和接口进行分类。当开发 Java 程序时,可能编写成百上千的类,因此很有必要对类和接口进行分类。

import 语句

在 Java 中,如果给出一个完整的限定名,包括包名、类名,那么 Java 编译器就可以很容易地定位到源代码或者类。import 语句就是用来提供一个合理的路径,使得编译器可以找到某个类。

例如,下面的命令行将会命令编译器载入 java_installation/java/io 路径下的所有类

import java.io.*;

用户自定义类:

用户除了可以使用Java的内置函数之外,还可以自己定义函数。自定义函数有3种方法。

使用关键字 function 构造

语法:

function funcName([param1][,param2...}){

statements;

}

使用 function 构造

语法:

var result = new function (['param1'][,'param2']...,'statements');

例如;

var result = new function ('x','y','return x+y');

使用函数直接量构造

语法:

var result = function ([param1][,param2,...]){

statements

};

这里也可以为函数指定一个名称,以便于递归程序的调用。例如:

var result = function([param1][,param2,...]){

statements

};

注意;

1.各个函数名不可以重复,并且区分大小写

2.函数名的命名规则和变量的命名规则相同

3.参数可以使用变量、常量或者表达式

4.如果函数有多个参数,多个参数之间使用逗号隔开

5.如果函数有返回值,使用return语句返回,如果没有return语句,函数将返回一个undefined值

6.自定义函数不会自动执行,必须调用才会执行

类的设计技巧:

1.一定要保证数据私有

这是最重要的,一定不要破坏封装性。

2.一定要对数据进行初始化

因为Java并不会为你初始化局部变量,但是会对对象的实例字段进行初始化。

3.不要在类中使用过多的基本类型

这个想法是要用其他的类替换使用多个相关的基本类型,这样会使类更易于理解,也易于修改。

4.不是所有的字段都需要单独的字段访问器和字段更改器、

5.分解有过多指责的类

简而言之,如果明显地可以将一个复杂的类分解成两个更为简单的类,就应该将其分解。

6.类名和方法要能体现它们的职责

类名与变量都应该有一个能够反映其含义的名字。

7.优先使用不可变的类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值