Java教程

类和对象

本文主要是介绍类和对象,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

面向对象思想是人类最自然的一种思考方式,它将所有预处理的问题抽象为对象,同时了解这些对象具有哪些相应的属性以及展示这些对象的的行为,以解决这些对象面临的一些实际问题,这样就在程序开发中引入了面向对象设计的概念,面向对象设计实质上就是对现实世界的对象进行建模操作。
对象:对象是事实存在的实体,通常将对象划分为两部分,静态部分和动态部分,静态部分为“属性”,动态部分为"行为"。
类:类就是同一类事物的统称经。类是构造对象时所依赖的规范,对象就是符合某类的定义所产生出来的实例。更为恰当的描述是,类是世间事物的抽象称呼,而对象则是这个事物相对应的实体。
类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体称为类。

面向对象程序设计的三大特点:封装性、继承性、多态性。
封装性:封装是面对对象编程的核心。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。
封装的作用:保证了类内部数据结构的完整性,应用该类的用户不能轻易地直接操作此数据结构,只能执行类允许公开的数据。这样就避免了外部操作对内部数据的影响,提高了程序的可维护性。
继承性:利用特定对象之间的共有属性。
多态性:多态的实现并不依赖于具体类,而是依赖于抽象类和接口。

1. 类

1.1 成员变量

Java中对象的属性也被称为成员变量。

public class Book {
    private  String name; //定义了三个成员变量:name,id,category
    private  int id;
    private  String category;
    
    public  String getName()  //定义了一个getName()方法
    {
        int id=0;     //方法内的局部变量
        setName("Java");   //调用类的成员方法
        return id+this.name;    //类里使用this.name表示Book类的成员变量name。
        
    }
    
    public void  setName(String name)   //定义了一个setName()方法,作用是将传入的参数name传递给成员变量name
    {
        this.name=name;
    }
    
    public Book getBook()   // 在类里声明了一个返回值为Book类的方法,返回Book类的引用
    {
        return this;
    }
}

1.2 成员方法:

Java中成员方法对应于类对象的行为。
定义成员方法的语法格式如下:

  权限修饰符 返回值类型 方法名(参数类型 参数名)
  { ...//方法体
  return 返回值;
}

在Book类中的成员方法有: getName()、setName()、getBook()。

    public  String getName()  //定义了一个getName()方法
    {
        int id=0;     //方法内的局部变量
        setName("Java");   //调用类的成员方法
        return id+this.name;    //类里使用this.name表示Book类的成员变量name。
        
    }
    
    public void  setName(String name)   //定义了一个setName()方法,作用是将传入的参数name传递给成员变量name
    {
        this.name=name;
    }

    public Book getBook()   // 在类里声明了一个返回值为Book类的方法,返回Book类的引用
    {
        return this;
    }

1.3 权限修饰符

Java中的权限修饰符主要包括private、 public、protected,这些修饰符控制着对类和类的成员变量以及成员方法的访问。

类修饰符 本类 同包类或子类 其他包类或子类
private 可见 不可见 不可见
protected 可见 可见 不可见
public 可见 可见 可见

ps:当声明类时,未使用权限修饰符时,默认为protected,即只有同包中的类和子类能够调用这个类的成员变量或成员方法。同时类的权限修饰符会约束类成员的权限设定,即如果类修饰符为protected,成员方法权限修饰符为public,但是其他包的类或子类同样无法调用此类方法。
实例:

      class Angclass(){
        public void doString()
    {  ...//方法体
      }
    }

等价于:

      class Angclass(){
         void doString()
    {  ...//方法体
      }

1.4 局部变量

在成员方法内定义的变量称为局部变量。如果局部变量和成员变量同名,在该方法的方法体内,起作用的变量为局部变量。
局部变量在方法执行时创建,在方法执行结束后被销毁。即局部变量的作用域为该变量声明开始到该变量的结束为止。局部变量在使用时必须进行赋值操作或初始化,否则会出现编译错误。

2.类的构造方法

构造方法是一个于与类同名的方法,对象的创建就是通过构造方法完成的,每当类实例化一个对象时,类都会自动调用构造方法。
构造方法的特点:
(1)构造方法没有返回值;
(2)构造方法的名称要与本类的名称相同。
可以使用this关键字调用构造方法:

public class Anything {
    public  Anything()
    {
        this("this 调用有参构造方法");
        System.out.println("无参构造方法");
    }
    public  Anything(String name)
    {
        System.out.println("有参构造方法");
    }

    public static void main(String[] args) {
        Anything at=new Anything();
    }
}

运行结果为:

3. 静态变量、常量和方法

static关键字: 由static修饰的变量、常量和方法被称做静态变量、常量和方法。静态成员同样遵循public、private、protected修饰符的约束。
在Java语言中对静态方法有两点规定:

  • 在静态方法中不可以使用this关键字;
  • 在静态方法中不可以直接调用非静态方法。

4. 对象

4.1 对象的创建

Java中通过new操作符来创建对象。
Test test =new Test();
test对象被创建出来时,就是一个对象的引用,这个引用在内存中为对象分配了存储空间。每个对象都是相互独立的,在内存中占据独立的内存地址,并且每个对象都具有自己的生命周期,当一个对象的生命周期结束时,由Java虚拟机自带的垃圾回收机制处理,不能再被使用。

public class Transfer {
    int i=20;
    public  void  call()
    {
        System.out.println("调用call()方法");
        for (i=0;i<3;i++)
        {
            System.out.print("["+i+"]");
        }
        System.out.println();
    }
    public  Transfer()
    {
        System.out.println("调用构造方法");
    }

    public static void main(String[] args) {
        Transfer t1=new Transfer();
        Transfer t2=new Transfer();
        System.out.println("t1的变量i="+t1.i);
        t1.call();
        t2.i=40;
        System.out.println("t2的变量i="+t2.i);
        t2.call();
    }
}

运行结果:

4.2 对象的销毁

对象被JVM视为垃圾的情况:

  • 对象引用超过其作用范围;
  • 将对象赋值为null。

Java中提供了一个finalize()方法,这个方法时Object类的方法,被声明为protected,用户可以在自己的类定义这个方法。用于垃圾回收,管理内存。
System.gc()方法强制启动垃圾回收器。

这篇关于类和对象的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!