欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java 面向对象——java中的类和对象

程序员文章站 2022-03-10 18:44:08
...

目录

对象和类的概念

一、Java中的类

定义类的基本格式:

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

1、构造器

2、成员变量

3、方法(成员方法)

4、初始化代码块(略)

二、Java中的对象

1、创建对象

2、访问实例变量和方法

实例


对象和类的概念

  • :类是一个模板,它描述一类对象的行为和状态。
  • 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。

借用网上的图简单理解一下类和对象,下图中男孩(boy)女孩(girl)类(class),而具体的每个人为该类的对象(object)

Java 面向对象——java中的类和对象

一、Java中的类

  • 现实世界的事物
属性:  人的身高,体重等
行为:  人可以学习,吃饭等
 
  • Java中用class描述事物也是如此
成员变量  就是事物的属性
成员方法  就是事物的行为
  • 定义类其实就是定义类的成员(成员变量和成员方法)
 

定义类的基本格式:

[修饰符] class 类名
{
//零到多个构造器...
//零到多个成员变量...
//零到多个方法...
//零到多个初始化块...
}
  • 修饰符可以为public 、final、abstract 或者不写
  • 类名:大驼峰命名法(第一个单词的首字母也大写。常用于类名、属性)(public class DataBaseUser

 小驼峰法:除第一个单词之外,其他单词首字母大写(int myStudentCount

通过下面一个简单的类来理解下Java中类的定义:

//学生类
class Student {
	//定义变量
	//姓名
	String name;
	//年龄
	int age;
	//地址
	String address;
	
	//定义方法
	//学习的方法
	public void study() {
		System.out.println("学生爱学习");
	}
	
	//吃饭的方法
	public void eat() {
		System.out.println("学习饿了,要吃饭");
	}
	
	//睡觉的方法
	public void sleep() {
		System.out.println("学习累了,要睡觉");
	}
}

 

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

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

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

代码示例:

public class Variable{
    static int allClicks=0;    // 类变量
 
    String str="hello world";  // 实例变量
 
    public void method(){
 
        int i =0;  // 局部变量
 
    }
}

 

1、构造器

构造器也叫构造方法或者构造函数,构造器与类名相同没有返回值,连void都不能写;
构造器定义格式:

[修饰符] 类名 (形参列表)
{
//构造器方法体代码
}

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

public class Puppy{
    public Puppy(){
    }
 
    public Puppy(String name){
        // 这个构造器仅有一个参数:name
    }
}

 

  • 名称与类名相同,没有返回值,不能写void
  • 如果类中没有手动添加构造器,编译器会默认再添加一个无参构造器
  • 如果手动添加了构造器(无论什么形式),默认构造器就会消失
  • 构造器可以重载

 

2、成员变量

成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。和以前变量的定义是一样的格式,但是位置不同,在类中方法外。

type 成员变量名称 [= 默认值];
  • 修饰符 (public  protected  private)三选一、 static、final

变量的定义格式:
        A:数据类型 变量名 = 初始化值;     int a=100;
        B:数据类型 变量名;         int  a;

             变量名 = 初始化值;

 

3、方法(成员方法)

成员方法:和我们前面学习过的方法的定义是一样的。去掉static关键字

  • 方法是解决一类问题的步骤的有序组合
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被引用
[修饰符] 方法的返回值类型 方法名称 (形参列表)
{
//方法体代码
[return 返回值;]
}
  • 修饰符 (public  protected  private)三选一、 static、final、synchronize、native

示例:

//定义方法
//学习的方法
public void study() {
	System.out.println("学生爱学习");
}

 

4、初始化代码块(略)

初始化代码块将在后面学习后单独讲解。

 

二、Java中的对象

1、创建对象

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

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字new来创建一个对象,只是为对象在内存中开辟空间。
  • 初始化:使用new创建对象时,会调用构造方法初始化对象,对象中的值赋初始值。

格式:

classTpye 对象名称 = new classTpye();

示例代码:

//声明一个SimplePerson类型的变量
SimplePerson simplePerson;
//通过new关键字调用SimplePerson类的构造器,返冋一个SimplePerson实例
//将该SimplePerson实例赋给simplePerson
simplePerson=new SimplePerson();
//可以简写为
SimplePerson simplePerson=new SimplePerson();

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

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

编译并运行上面的程序,会打印出下面的结果:

小狗的名字是 : tommy

 

2、访问实例变量和方法

通过已创建的对象来访问成员变量和成员方法,如下所示:

/* 实例化对象 */
Object referenceVariable = new Constructor();
/* 访问类中的变量 */
referenceVariable.variableName;
/* 访问类中的方法 */
referenceVariable.methodName();

实例:

下面的例子展示如何访问实例变量和调用成员方法:

public class Puppy{
   int puppyAge;
   public Puppy(String name){
      // 这个构造器仅有一个参数:name
      System.out.println("小狗的名字是 : " + name ); 
   }
 
   public void setAge( int age ){
       puppyAge = age;
   }
 
   public int getAge( ){
       System.out.println("小狗的年龄为 : " + puppyAge ); 
       return puppyAge;
   }
 
   public static void main(String[] args){
      /* 创建对象 */
      Puppy myPuppy = new Puppy( "tommy" );
      /* 通过方法来设定age */
      myPuppy.setAge( 2 );
      /* 调用另一个方法获取age */
      myPuppy.getAge( );
      /*你也可以像下面这样访问成员变量 */
      System.out.println("变量值 : " + myPuppy.puppyAge ); 
   }
}

编译并运行上面的程序,产生如下结果:

小狗的名字是 : tommy
小狗的年龄为 : 2
变量值 : 2

 

相关标签: javaSE(基础)