Java类的定义及其实例化
如果你不了解类和对象的概念,请猛击这里:Java类和对象的概念
类必须先定义才能使用。类是创建对象的模板,创建对象也叫类的实例化。
下面通过一个简单的例子来理解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 www.feishenbo.cn ("花花", 3);
- // 访问成员变量
- String name = myDog.name;
- int age = myDog.age;
- System.out.println("我是一只小狗,我名字叫" + name + ",我" + age + "岁了");
- // 访问方法
- myDog.bark();
- myDog.hungry();
- }
- }
运行结果:
感谢主人领养了我
我是一只小狗,我名字叫花花,我3岁了
汪汪,不要过来
主人,我饿了
Java类的定义及其实例化的更多相关文章
- JAVA基础知识|java虚拟机(JVM)
一.JVM简介 java语言是跨平台的,兼容各种操作系统.实现跨平台的基石就是虚拟机(JVM),虚拟机不是跨平台的,所以不同的操作系统需要安装不同的jdk版本(jre=jvm+类库:jdk=jre+开 ...
- java基础知识——Java的定义,特点和技术平台
(作者声明:对于Java编程语言,很多人只知道怎么用,却对其了解甚少.我也是其中一员.所以菜鸟的我,去查询了教科书以及大神的总结,主要参考了<Java核心技术>这本神作.现在分享给大家!) ...
- [java基础知识]java安装步骤
jre: java运行环境. jre = java虚拟机 + 核心类库(辅助java虚拟机运行的文件).如果只是运行java程序,只需要安装jre. jdk: java开发工具集 jd ...
- java 基础知识九 类与对象
java 基础知识九 类与对象 1.OO(Object–Oriented )面向对象,OO方法(Object-Oriented Method,面向对象方法,面向对象的方法)是一种把面向对象的思想应 ...
- java 基础知识(java web 方面的)
1.java面向对象的基本特征:封装性,多态性,继承性. 2.Java的泛型:iterator接口主要有hasnext()方法,next()方法,remove()方法:collection接口继承了i ...
- [转] Java基础知识——Java语言基础
http://blog.csdn.net/loneswordman/article/details/9905931 http://blog.csdn.net/wanghuan203/article/d ...
- java基础知识精华
转载:https://www.jianshu.com/p/6c078abb720f java基础知识 java内存模型 java运行时数据区域 hashMap 如何解决冲突 存储方式 冲突达到一定数量 ...
- 第二十九节:Java基础知识-类,多态,Object,数组和字符串
前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...
- java基础知识回顾之---java String final类普通方法
辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /* * 按照面向对象的思想对字符串进行功能分类. * ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
随机推荐
- 【转载】全面解析Unity3D自动生成的脚本工程文件
我们在Unity3D开发的时候,经常会看到它会产生不少固定命名工程文件,诸如: Assembly-CSharp-vs.csproj Assembly-CSharp-firstpass-vs.csp ...
- Python 第一周编程作业
一. 编程题 1. 结合turtle库使用手册,读懂下列代码,并在jupyter编译器中运行观察结果: 依次分析下代码: 第一行 通过保留字import引用了Python中用于绘制图形的turtl ...
- 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 ...
- CentOS 6.3安装配置LAMP服务器(Linux+Apache+MySQL+PHP5)
服务器系统环境:CentOS 6.3 客户端系统环境:Windows 7 ultimate(x86)sp1 简体中文旗舰版 ※ 本文档描述了如何在Linux服务器配置Apache.Mysql.PHP ...
- beta版本前准备
目录 过去存在的问题 任务分工 开发规范 后端总结 卉卉 家灿 前端总结 绪佩 青元 恺琳 宇恒 丹丹 算法&API接口 家伟 鸿杰 一好 文档&博客撰写 政演 产品功能 我们已经做了 ...
- Vue.js特性
1. MVVM模式 M:model,业务模型,用处:处理数据和提供数据. V:view,用户界面.用户视图. 业务模型model中的数据发生改变时,用户视图view也随之变化. 用户视图view改变的 ...
- sqlalchemy presto 时间比较
大数据统计时,需要计算开仓订单减掉经纪商时间差,等于n 小时 或 星期几的订单. presto sql语句如下: select sum(profit) from t_table where open_ ...
- favicon.ico generator
favicon.ico generator https://www.favicon-generator.org/ https://www.favicon.cc/ https://www.favicon ...
- 少年Pi的奇幻漂流
选择怀疑作为生活哲学就像选择静止作为交通方式. 的确,我们遇见的人可能改变我们,有时候改变如此深刻,在那之后我们成了完全不同的人,甚至我们的名字都不一样了. 声音会消失,但伤害却留了下来,像小便蒸 ...
- MySQL基本管理和应用
# yum install mysql-server # /etc/init.d/mysqld startInitializing MySQL database: Installing MySQL s ...