Java知多少(18)类的定义及其实例化
类必须先定义才能使用。类是创建对象的模板,创建对象也叫类的实例化。
下面通过一个简单的例子来理解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知多少(18)类的定义及其实例化的更多相关文章
- 类的定义与实例化、构造函数和初始化表(day04)
		十三 类的定义与实例化 类的一般形式 class/struct 类名:继承表{ 访问控制限定符: 类名(形参表):初始化表{}//构造函数 ~类名(void){}//析构函数 返回类型 函数名(形参表 ... 
- php类的定义与实例化方法
		php类的定义 类是对某个对象的定义.它包含有关对象动作方式的信息,包括它的名称.方法.属性和事件.实际上它本身并不是对象,因为它不存在于内存中.当引用类的代码运行时,类的一个新的实例,即对象,就在内 ... 
- Java:【面向对象:类的定义,静态变量,成员变量,构造函数,封装与私有,this】
		本文内容: 什么是面对对象 类的定义与对象实例化 成员变量 成员变量的有效范围 成员变量的赋值 静态变量.方法与实例变量.方法 构造函数 封装与私有 this关键字 注:函数和方法是一样东西.[由于我 ... 
- Java知多少(36)内部类及其实例化
		在 Java 中,允许在一个类(或方法.语句块)的内部定义另一个类,称为内部类(Inner Class),有时也称为嵌套类(Nested Class). 内部类和外层封装它的类之间存在逻辑上的所属关系 ... 
- java新手笔记18 类比较
		1.Shap类 package com.yfs.javase; public class Shape /*extends Object */{ //默认继承object object方法全部继承 // ... 
- Java类的定义及其实例化
		如果你不了解类和对象的概念,请猛击这里:Java类和对象的概念 类必须先定义才能使用.类是创建对象的模板,创建对象也叫类的实例化. 下面通过一个简单的例子来理解Java中类的定义: public cl ... 
- 《Java基础知识》Java类的定义及其实例化
		类必须先定义才能使用.类是创建对象的模板,创建对象也叫类的实例化. 下面通过一个简单的例子来理解Java中类的定义: public class Dog { String name; int age; ... 
- C++ template学习二 类模板定义及实例化
		一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员.默写成员函数的参数.某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的). 如果一个类中数据成员 ... 
- 一个简单的c++类的定义和实例化
		#include "iostream" #include <string> using namespace std; class mycoach { private: ... 
随机推荐
- GCC&&GDB在OI中的介绍
			序言 这本来是用Word写的,但是后来我换了系统所以只能用markdown迁移然后写了...... $\qquad$本文主要投食给那些在Windows下活了很久然后考试时发现需要用命令行来操作时困惑万 ... 
- 潭州课堂25班:Ph201805201 WEB 之 CSS 第二课 (课堂笔记)
			CSS 的引入方法: 第一种 : <!--直接在标签仙设置--><p style="color: yellow">CSS的第一种引入方法</p> ... 
- JavaScript_原型和继承(2017-03-15)
			一.函数创建过程 在了解原型链之前我们先来看看一个函数在创建过程中做了哪些事情,举一个空函数的例子: function A() {}; 当我们在代码里面声明这么一个空函数,js解析的本质是(肤浅理解有 ... 
- 用Canvas做视频拼图
			声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 几天前同事给我看了一个特效,是一个拼图游戏,不同的是,拼图里的是动画.他让我看下做个DEMO,于是就自己整了一会,也确实不难.用canva ... 
- 解决qt提示:qt.network.ssl: QSslSocket: cannot call unresolved function DH_free
			方法一(解决):把C:\Qt\Qt5.8.0\Tools\QtCreator\bin下的libeay32.dll和ssleay32.dll库复制到C:\Qt\Qt5.8.0\5.8\msvc2015_ ... 
- ios 应用发布渠道大全
			#91助手 #同步推 #威锋网 #力美 #PP助手 #同步推线下卖场 #AppleTree #快用苹果助手 #AppleTree-广告 #AppleTree-新市场 #魔品助手ios #itools ... 
- Deploying JAR Package & JSP Page in EBS R12.2.4 WLS
			https://pan.baidu.com/s/1OomyeLdbGWxTtCKVcweo0w # Uninstall JAR JSP QRCODE 1.# 查找QRCODE相关文件位置 [root@ ... 
- maven学习二(dependencies)
			在前面一篇文章maven学习一(HelloWorld工程)已经对maven有了基本介绍,本文开始介绍maven依赖,通过如何如何增加log4j来学习maven的dependencies no-depe ... 
- 混沌的艺术--- YChaos通过数学公式生成混沌图像
			艺术真得很难吗?也许如同编程一样容易.我写了一套软件,其功能是通过输入数学方程式,生成艺术图像.一提到数学有人可能会发怵,这里请不要担心,生成混沌的数学公式大都很是简单,基本上只用加.减.乘.除.余. ... 
- vim 在行首 行尾添加字符
			在行首添加字符: %s/^/your_word/ 在行尾添加字符 %s/$/your_word/ 
