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

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

 public class Dog{
String name;
int age; void bark(){ // 汪汪叫
System.out.println("汪汪,不要过来");
} void hungry(){ // 饥饿
System.out.println("主人,我饿了");
}
}

对示例的说明:

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

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

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

构造方法

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

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

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

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

 public class Dog{
String name;
int age; // 构造方法,没有返回值
Dog(String name1, int age1){
name = name1;
age = age1;
System.out.println("感谢主人领养了我");
} // 普通方法,必须有返回值
void bark(){
System.out.println("汪汪,不要过来");
} void hungry(){
System.out.println("主人,我饿了");
} public static void main(String arg[]){
// 创建对象时传递的参数要与构造方法参数列表对应
Dog myDog = new Dog("花花", 3);
}
}

运行结果:

感谢主人领养了我

说明:

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

创建对象

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

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

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

例如:

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

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

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

访问成员变量和方法

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

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

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

 public class Dog{
String name;
int age; Dog(String name1, int age1){
name = name1;
age = age1;
System.out.println("感谢主人领养了我");
} void bark(){
System.out.println("汪汪,不要过来");
} void hungry(){
System.out.println("主人,我饿了");
} public static void main(String arg[]){
Dog myDog = new Dog("花花", 3);
// 访问成员变量
String name = myDog.name;
int age = myDog.age;
System.out.println("我是一只小狗,我名字叫" + name + ",我" + age + "岁了");
// 访问方法
myDog.bark();
myDog.hungry();
}
}

运行结果:

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

系列文章:

Java知多少(上)

Java知多少(中)

Java知多少(下)

Java知多少(18)类的定义及其实例化的更多相关文章

  1. 类的定义与实例化、构造函数和初始化表(day04)

    十三 类的定义与实例化 类的一般形式 class/struct 类名:继承表{ 访问控制限定符: 类名(形参表):初始化表{}//构造函数 ~类名(void){}//析构函数 返回类型 函数名(形参表 ...

  2. php类的定义与实例化方法

    php类的定义 类是对某个对象的定义.它包含有关对象动作方式的信息,包括它的名称.方法.属性和事件.实际上它本身并不是对象,因为它不存在于内存中.当引用类的代码运行时,类的一个新的实例,即对象,就在内 ...

  3. Java:【面向对象:类的定义,静态变量,成员变量,构造函数,封装与私有,this】

    本文内容: 什么是面对对象 类的定义与对象实例化 成员变量 成员变量的有效范围 成员变量的赋值 静态变量.方法与实例变量.方法 构造函数 封装与私有 this关键字 注:函数和方法是一样东西.[由于我 ...

  4. Java知多少(36)内部类及其实例化

    在 Java 中,允许在一个类(或方法.语句块)的内部定义另一个类,称为内部类(Inner Class),有时也称为嵌套类(Nested Class). 内部类和外层封装它的类之间存在逻辑上的所属关系 ...

  5. java新手笔记18 类比较

    1.Shap类 package com.yfs.javase; public class Shape /*extends Object */{ //默认继承object object方法全部继承 // ...

  6. Java类的定义及其实例化

    如果你不了解类和对象的概念,请猛击这里:Java类和对象的概念 类必须先定义才能使用.类是创建对象的模板,创建对象也叫类的实例化. 下面通过一个简单的例子来理解Java中类的定义: public cl ...

  7. 《Java基础知识》Java类的定义及其实例化

    类必须先定义才能使用.类是创建对象的模板,创建对象也叫类的实例化. 下面通过一个简单的例子来理解Java中类的定义: public class Dog { String name; int age; ...

  8. C++ template学习二 类模板定义及实例化

    一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员.默写成员函数的参数.某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的). 如果一个类中数据成员 ...

  9. 一个简单的c++类的定义和实例化

    #include "iostream" #include <string> using namespace std; class mycoach { private: ...

随机推荐

  1. 模拟页面获取的php数据(三)

    <?php return array( "aData" => [//通勤方式 "trafficType" => [ 0 => [ &qu ...

  2. [HDU5968]异或密码

    [HDU5968]异或密码 题目大意: 数据共\(T(T\le100)\)组.每组给定一个长度为\(n(n\le100)\)的非负整数序列\(A(A_i\le1024)\),\(m(m\le100)\ ...

  3. [Beijing wc2012]算不出的算式

    OJ题号:BZOJ2659 思路:数学. 建立平面直角坐标系.在第一象限作直线y=qx/p,易得Σ[kq/p]即为当x<(p/2)时,直线下方(包括直线)的整点数:Σ[kp/q]为当y<( ...

  4. CocosCreator内置函数实现物体拖动

    通过CocosCreator由内置的cc.Node.EventType.MOUSE_MOVE鼠标(触摸)事件实现,返回参数为鼠标的坐标值. 根据鼠标的x,y实现物体的移动,即将鼠标放置在该节点上,实现 ...

  5. 喵哈哈村的魔法考试 Round #9 (Div.2) 题解

    A题 喵哈哈村的数据筛选游戏 题解:这道题签到题,拿个数组记录一下这个数是否出现过即可. #include<bits/stdc++.h> using namespace std; cons ...

  6. Java多线程:Linux多路复用,Java NIO与Netty简述

    JVM的多路复用器实现原理 Linux 2.5以前:select/poll Linux 2.6以后: epoll Windows: IOCP Free BSD, OS X: kqueue 下面仅讲解L ...

  7. vue_axios请求封装、异常拦截统一处理

    1.前端网络请求封装.异常统一处理 vue中采用axios处理网络请求,避免请求接口重复代码,以及各种网络情况造成的异常情况的判断,采用axios请求封装和异常拦截操作: axios 请求封装 // ...

  8. 数据分析系统DIY1/3:CentOS7+MariaDB安装纪实

    打算通过实践.系统学习一下数据分析. 初步计划要完毕的三个任务. 一.用VMware装64位CentOS,数据库服务端用CentOS自带的就好. 二.数据採集与预处理用Dev-C++编程解决. 三.用 ...

  9. wxParse解析富文本内容使点击图片可以选中并实现放大缩小

    wxParse解析富文本内容不多说,之前写过步骤介绍,主要是在使用过程中发现解析的富文本内容里有图片时有的可以点击放大缩小,有的点击却报错,找不到imgUrls. 经过排查发现:循环解析的富文本内容正 ...

  10. 快速准备(复制替换)一套新测试环境,CentOS7 MySQL相关配置

    拿到一个新环境,需要找相关配置,我有一个办法,相对能比较快速地复制一套环境出来. 修改机器配置: virsh 相关几条命令,已完成,后续我再整理补充... 虚拟化相关,参考:https://www.c ...