如果你不了解类和对象的概念,请猛击这里:Java类和对象的概念

类必须先定义才能使用。类是创建对象的模板,创建对象也叫类的实例化。

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

  1. public class Dog{
  2. String name;
  3. int age;
  4. void bark(){  // 汪汪叫
  5. System.out.println("汪汪,不要过来");
  6. }
  7. void hungry(){  // 饥饿
  8. System.out.println("主人,我饿了");
  9. }
  10. }

对示例的说明:

  • public 是类的修饰符,表明该类是公共类,可以被其他类访问。修饰符将在下节讲解。
  • class 是定义类的关键字。
  • Dog 是类名称。
  • name、age 是类的成员变量,也叫属性;bark()、hungry() 是类中的函数,也叫方法。

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

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

构造方法

在类实例化的过程中自动执行的方法叫做构造方法,它不需要你手动调用。构造方法可以在类实例化的过程中做一些初始化的工作。

构造方法的名称必须与类的名称相同,并且没有返回值。

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

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

  1. public class Dog{
  2. String name;
  3. int age;
  4. // 构造方法,没有返回值
  5. Dog(String name1, int age1){
  6. name = name1;
  7. age = age1;
  8. System.out.println("感谢主人领养了我");
  9. }
  10. // 普通方法,必须有返回值
  11. void bark(){
  12. System.out.println("汪汪,不要过来");
  13. }
  14. void hungry(){
  15. System.out.println("主人,我饿了");
  16. }
  17. public static void main(String arg[]){
  18. // 创建对象时传递的参数要与构造方法参数列表对应
  19. Dog myDog = new Dog("花花", 3);
  20. }
  21. }

运行结果:
感谢主人领养了我

说明:

  • 构造方法不能被显示调用。
  • 构造方法不能有返回值,因为没有变量来接收返回值。

创建对象

对象是类的一个实例,创建对象的过程也叫类的实例化。对象是以类为模板来创建的。

在Java中,使用new关键字来创建对象,一般有以下三个步骤:

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

例如:

  1. Dog myDog; // 声明一个对象
  2. myDog = new Dog("花花", 3); // 实例化

也可以在声明的同时进行初始化:

  1. Dog myDog = new Dog("花花", 3);

访问成员变量和方法

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

  1. // 实例化
  2. Dog myDog = new Dog("花花", 3);
  3. // 通过点号访问成员变量
  4. myDog.name;
  5. // 通过点号访问成员方法
  6. myDog.bark();

下面的例子演示了如何访问成员变量和方法:

  1. public class Dog{
  2. String name;
  3. int age;
  4. Dog(String name1, int age1){
  5. name = name1;
  6. age = age1;
  7. System.out.println("感谢主人领养了我");
  8. }
  9. void bark(){
  10. System.out.println("汪汪,不要过来");
  11. }
  12. void hungry(){
  13. System.out.println("主人,我饿了");
  14. }
  15. public static void main(String arg[]){
  16. Dog myDog = new Dog www.feishenbo.cn ("花花", 3);
  17. // 访问成员变量
  18. String name = myDog.name;
  19. int age = myDog.age;
  20. System.out.println("我是一只小狗,我名字叫" + name + ",我" + age + "岁了");
  21. // 访问方法
  22. myDog.bark();
  23. myDog.hungry();
  24. }
  25. }

运行结果:
感谢主人领养了我
我是一只小狗,我名字叫花花,我3岁了
汪汪,不要过来
主人,我饿了

Java类的定义及其实例化的更多相关文章

  1. JAVA基础知识|java虚拟机(JVM)

    一.JVM简介 java语言是跨平台的,兼容各种操作系统.实现跨平台的基石就是虚拟机(JVM),虚拟机不是跨平台的,所以不同的操作系统需要安装不同的jdk版本(jre=jvm+类库:jdk=jre+开 ...

  2. java基础知识——Java的定义,特点和技术平台

    (作者声明:对于Java编程语言,很多人只知道怎么用,却对其了解甚少.我也是其中一员.所以菜鸟的我,去查询了教科书以及大神的总结,主要参考了<Java核心技术>这本神作.现在分享给大家!) ...

  3. [java基础知识]java安装步骤

    jre:  java运行环境.  jre =  java虚拟机 + 核心类库(辅助java虚拟机运行的文件).如果只是运行java程序,只需要安装jre.    jdk: java开发工具集   jd ...

  4. java 基础知识九 类与对象

    java  基础知识九  类与对象 1.OO(Object–Oriented )面向对象,OO方法(Object-Oriented Method,面向对象方法,面向对象的方法)是一种把面向对象的思想应 ...

  5. java 基础知识(java web 方面的)

    1.java面向对象的基本特征:封装性,多态性,继承性. 2.Java的泛型:iterator接口主要有hasnext()方法,next()方法,remove()方法:collection接口继承了i ...

  6. [转] Java基础知识——Java语言基础

    http://blog.csdn.net/loneswordman/article/details/9905931 http://blog.csdn.net/wanghuan203/article/d ...

  7. java基础知识精华

    转载:https://www.jianshu.com/p/6c078abb720f java基础知识 java内存模型 java运行时数据区域 hashMap 如何解决冲突 存储方式 冲突达到一定数量 ...

  8. 第二十九节:Java基础知识-类,多态,Object,数组和字符串

    前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...

  9. java基础知识回顾之---java String final类普通方法

    辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /*     * 按照面向对象的思想对字符串进行功能分类.     *      ...

  10. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

随机推荐

  1. 【转载】全面解析Unity3D自动生成的脚本工程文件

    我们在Unity3D开发的时候,经常会看到它会产生不少固定命名工程文件,诸如:  Assembly-CSharp-vs.csproj  Assembly-CSharp-firstpass-vs.csp ...

  2. Python 第一周编程作业

    一.  编程题 1.  结合turtle库使用手册,读懂下列代码,并在jupyter编译器中运行观察结果: 依次分析下代码: 第一行 通过保留字import引用了Python中用于绘制图形的turtl ...

  3. ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory

    这是在python中使用caffe产生的错误. 程序很普通: #-*-coding=utf-8-*- import numpy as npimport matplotlib.pyplot as plt ...

  4. CentOS 6.3安装配置LAMP服务器(Linux+Apache+MySQL+PHP5)

    服务器系统环境:CentOS 6.3 客户端系统环境:Windows 7 ultimate(x86)sp1 简体中文旗舰版 ※  本文档描述了如何在Linux服务器配置Apache.Mysql.PHP ...

  5. beta版本前准备

    目录 过去存在的问题 任务分工 开发规范 后端总结 卉卉 家灿 前端总结 绪佩 青元 恺琳 宇恒 丹丹 算法&API接口 家伟 鸿杰 一好 文档&博客撰写 政演 产品功能 我们已经做了 ...

  6. Vue.js特性

    1. MVVM模式 M:model,业务模型,用处:处理数据和提供数据. V:view,用户界面.用户视图. 业务模型model中的数据发生改变时,用户视图view也随之变化. 用户视图view改变的 ...

  7. sqlalchemy presto 时间比较

    大数据统计时,需要计算开仓订单减掉经纪商时间差,等于n 小时 或 星期几的订单. presto sql语句如下: select sum(profit) from t_table where open_ ...

  8. favicon.ico generator

    favicon.ico generator https://www.favicon-generator.org/ https://www.favicon.cc/ https://www.favicon ...

  9. 少年Pi的奇幻漂流

    选择怀疑作为生活哲学就像选择静止作为交通方式.   的确,我们遇见的人可能改变我们,有时候改变如此深刻,在那之后我们成了完全不同的人,甚至我们的名字都不一样了. 声音会消失,但伤害却留了下来,像小便蒸 ...

  10. MySQL基本管理和应用

    # yum install mysql-server # /etc/init.d/mysqld startInitializing MySQL database: Installing MySQL s ...