以下内容引用自http://wiki.jikexueyuan.com/project/java/object-classes.html

一、概述

Java是一种面向对象的语言。作为一种具有面向对象特征的语言,Java包括以下几项基本概念:

  • 多态性
  • 继承性
  • 封装性
  • 抽象性
  • 对象
  • 实例
  • 消息解析

什么是类和对象:

  • 对象:对象具有状态和行为。比如现实世界的:小汽车,狗,人类等等。所有这些对象都具有状态和行为。
  • :类可以被定义为描述对象支持类型的行为、状态的的模板、蓝图。

二、Java中的对象

如果考虑一条狗,那么它的状态就是:名字,品种,颜色,它的行为就是汪汪,摇尾巴,跑。

如果将软件中的对象和现实世界中的对象对比,那么会发现他们有很多相似的特征。软件中的对象也具有状态和行为。软件的状态被储存在文件中,它的行为通过方法来表现。

因此,在软件发展过程中方法控制对象的内在状态并且对象和对象间的交流是通过方法来完成的。

三、Java中的类

类是有独立的对象创造出的蓝图。

下面给出了一个类的例子:

public class Dog{
String breed;
int age;
String color; void barking(){
} void hungry(){
} void sleeping(){
}
}

类可以包括以下的变量类型:

  • 局部变量:在方法,构造器或区域中定义的变量成为局部变量。变量将会在方法内产生和发展,然后当方法结束变量就会破坏。
  • 实例变量:实例变量是在类内,但是在方法外的变量。这些变量是当类被装载时被实体化的。实例变量可以是从特定类的任何方法,构造器,区域中存取。
  • 类变量:类变量是在类中声明的变量,它处在任何方法之外,有静态关键字。

类可以由任意数量的方法来存取不同种类方法的值。在上面的例子中,barking()hungry()sleeping()是方法。

四、构造器

每一个类都有一个构造器。如果不单独为一个类编写构造器那么Java的编译器将会给这个类建立一个默认的构造器。

每当一个新的对象被创建,至少一个构造器将会被调用。构造器的一个最主要的原则就是他们必须和类有同样的名字。一个类可以有不止一个构造器。并且没有返回值。

下面给出了一个构造器的例子:

public class Puppy{
public Puppy(){
} public Puppy(String name){
}
}

在需要只创建一个类的实例的时,Java也支持单例。

五、创造一个对象

如前所述,类为对象提供了蓝图。因此基本来说一个对象是从一个类中创造出来的。在Java中,新的关键词被用来创造新的对象。创建类的步骤如下:

  • 声明:变量声明可以声明其所代表的对象类型。
  • 实例化:“新的”关键词用来创造对象。
  • 初始化:“新的”关键词伴随着一个构造器的启用,这个将新的对象初始化。

下面给出了一个创造对象的例子:

public class Puppy{

   public Puppy(String name){
// This constructor has one parameter, name.
System.out.println("Passed Name is :" + name );
}
public static void main(String []args){
// Following statement would create an object myPuppy
Puppy myPuppy = new Puppy( "tommy" );
}
}
//如果编译并运行上述程序,那么将输出下列结果:
Passed Name is :tommy

六、访问实体变量和方法

实体变量和方法是通过创造对象来访问的。为了访问一个实体变量完全有效的路径应该如下所示:

/* First create an object */
ObjectReference = new Constructor();
/* Now call a variable as follows */
ObjectReference.variableName;
/* Now you can call a class method as follows */
ObjectReference.MethodName();

例子:

这个例子解释了如何存取类的实体变量和方法:

public class Puppy{

   int puppyAge;

   public Puppy(String name){
// This constructor has one parameter, name.
System.out.println("Passed Name is :" + name );
}
public void setAge( int age ){
puppyAge = age;
} public int getAge( ){
System.out.println("Puppy's age is :" + puppyAge );
return puppyAge;
}
public static void main(String []args){
/* Object creation */
Puppy myPuppy = new Puppy( "tommy" ); /* Call class method to set puppy's age */
myPuppy.setAge( 2 ); /* Call another class method to get puppy's age */
myPuppy.getAge( ); /* You can access instance variable as follows as well */
System.out.println("Variable Value :" + myPuppy.puppyAge );
}
}
//如果编译运行上述程序,那么将会产生如下结果:
Passed Name is :tommy
Puppy's age is :2
Variable Value :2

七、源文件声明规则

当在源文件中声明类,输入和打包语法时,这些规则是十分重要的。

  • 每个源文件中只能有一个公共类。
  • 一个源文件可以有很多非公共类。
  • 公共类的名称必须是源文件的名称同时也要以.java为后缀。举例来说:类的名称是public class Employee{},那么源文件就应该是Employee.java
  • 如果类是在一个程序包中定义的,那么程序包的声明必须是源文件的第一个声明。
  • 如果输入声明出现那么他们必须被写在封装声明和类声明之间。如果没有封装声明那么输入声明必须在源文件的第一行。
  • 输入和打包声明会暗示所有源文件中的存在的类。在源文件中很难为不同的类区分输入和封装声明。
    类有不同的访问级别并且有很多不同的类;抽象的类,最终的类等等。
    除了以上提到的类的类型之外,Java也有像内部类和匿名类这样的特殊类。

八、Java程序包

简而言之,就是一种对类和接口进行分类的一种方法。当用Java开发程序时,数百个类和接口会被编写,因此对这些类进行分类是必须的,而且也会使问题变得容易。

九、Import语法

在Java中,如果给出包括封装和类的名称的全限定名,那么编译器很容易定位到源类和源代码。Import语法是给编译器寻找特定类的适当位置的一种方法。

举例来说,下面这行语句将会要求编译器去装载java_installation/java/io路径下的所有可用的类:

import java.io.*;

十、一个简单的案例

下面将创建两个类:Employee和EmployeeTest。

这个Employee类包括四个实体变量姓名(name),年龄(age),职位(designation)和薪水(salary)。这个类有一个确定的且需要参数的构造器。

import java.io.*;
public class Employee{
String name;
int age;
String designation;
double salary; // This is the constructor of the class Employee
public Employee(String name){
this.name = name;
}
// Assign the age of the Employee to the variable age.
public void empAge(int empAge){
age = empAge;
}
/* Assign the designation to the variable designation.*/
public void empDesignation(String empDesig){
designation = empDesig;
}
/* Assign the salary to the variable salary.*/
public void empSalary(double empSalary){
salary = empSalary;
}
/* Print the Employee details */
public void printEmployee(){
System.out.println("Name:"+ name );
System.out.println("Age:" + age );
System.out.println("Designation:" + designation );
System.out.println("Salary:" + salary);
}
}

为了运行这个Employee类应当建立主函数和类实例化。下面分别为这些任务创建类。

下面所给的是EmployeeTest类,这个类创建了两个Employee类的实例,并且为每个对象调用方法从而给每个变量赋值。

import java.io.*;
public class EmployeeTest{ public static void main(String args[]){
/* Create two objects using constructor */
Employee empOne = new Employee("James Smith");
Employee empTwo = new Employee("Mary Anne"); // Invoking methods for each object created
empOne.empAge(26);
empOne.empDesignation("Senior Software Engineer");
empOne.empSalary(1000);
empOne.printEmployee(); empTwo.empAge(21);
empTwo.empDesignation("Software Engineer");
empTwo.empSalary(500);
empTwo.printEmployee();
}
}

编译两个类然后运行EmployeeTest,会看到如下结果:

javac Employee.java
vi EmployeeTest.java
javac EmployeeTest.java
java EmployeeTest Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0

测试工程:https://github.com/easonjim/5_java_example/tree/master/javabasicstest/test2

Java的对象和类的更多相关文章

  1. Java常见对象Object类中的个别方法

    Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成 ...

  2. 快乐编程大本营【java语言训练班】 6课:用java的对象和类编程

    快乐编程大本营[java语言训练班] 6课:用java的对象和类编程 第1节. 什么是对象和类 第2节. 对象的属性和方法 第3节. 类的继承 第4节. 使用举例:创建类,定义方法,定义属性 第5节. ...

  3. Java的对象与类,继承

    Java的对象与类,继承 题目1.Java类的建立与使用 设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名.当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的 ...

  4. 你真的了解JAVA中对象和类、this、super和static关键字吗

    作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.JAVA底层.面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 目录 Java对象究竟是什么? 创建对象的过程 ...

  5. Java基础-对象与类

    面向对象程序设计概述 面向对象的程序设计(简称OOP)时当今主流的程序设计范型,已经取代了"结构化"过程化程序设计开发技术,Java是完全面向对象的. 类 类设计构造对象的模板或蓝 ...

  6. Java核心技术 对象与类

    对象与对象变量: 要想使用对象,就必须首先构造对象,并指定其初始状态,然后,对对象应用方法. 在Java中,使用构造器构造新实例.构造器是一种特殊的方法,用来构造并初始化对象. 在实际开发中,通常需要 ...

  7. Java 2-Java 对象和类

    Java 对象和类 Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 消息解析 本节我们重点研究对象和类的概念. 对象:对象是类的一个实例,有状态和行为. ...

  8. Java 的对象和类

    Java 是一种面向对象的语言.作为一个面向的语言,Java 具有面向对象的特性,Java 能够支持下面的一些基本概念 − 多态(Polymorphism) 继承(Inheritance) 封装(En ...

  9. mongodb中Gson和java##Bean对象转化类

    此类使用感觉比较繁琐, 每个字段加注解才可以使用, 不如mongoTemplate使用方便, 但如果使用mongo客户端的话, 还是比手动拼接快一点, 所以贴在这儿 package com.iwher ...

  10. java入门---对象和类&概念详解&实例

        Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载     这篇文章,我们主要来看下: 对象:对象是类的一个实例(对象不是找个女朋友),有状态 ...

随机推荐

  1. COGS 2098. Asm.Def的病毒

    ★☆   输入文件:asm_virus.in   输出文件:asm_virus.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] “这就是我们最新研制的,世界上第一种可持 ...

  2. 10g集群启动顺序

    1. 首先, /etc/inittab(不同平台文件名可能不同),文件中的下面3行被调用. h1:35:respawn:/etc/init.d/init.evmd run >/dev/null ...

  3. 15分钟学会使用Git

    http://blog.csdn.net/u013510614/article/details/50588446 主体思想 Git作为一个复杂的版本控制系统,命令之多,相信很多小白已经望而却步,有的尝 ...

  4. Linux之vi(vim)编辑器

    命令行模式:默认进来就是命令行模式 ,可以使用很多命令:比如i . a . o i:光标前面输入内容 a:光标的下一位字符开始输入内容 o:光标的下一行开始输入内容 编辑模式: 退出编辑模式:键盘上e ...

  5. cocos2dx 接入bugly 报错 Fail to get class by NSClassFromString(BuglyAgent)

    ios 端安装文档接入库后,报错 -> static void BuglyJSAgent::reportJSError(JSContext *, const char *, JSErrorRep ...

  6. dpdk快速编译使用

    QuickStart 环境 dpdk: dpdk-17.11 运行前配置 配置系统HugePages #mkdir /mnt/huge_1GB/ #vim /etc/fstab nodev /mnt/ ...

  7. 关于excel导入手机号提取时被自动加上多余空万国码的问题

    //去除excel粘贴自动加上的空万国码“\U202d” "U202c" //去除excel粘贴自动加上的空万国码“\U202d” "U202c" String ...

  8. (十七)python 3 函数递归

    递归函数 即自己调用自己,递归中可以函数自身调用自身,但是使用时类似于条件循环一样,要有递归的终止条件 优点:使用递归时,常常可以让代码更加简洁 缺点:递归会占用比较多的内存,当递归次数比较多时,性能 ...

  9. python_random模块

    random模块 import random print(random.random()) # 大于0且小于1之间的小数 print(random.randint(1, 6)) # 大于等于1且小于等 ...

  10. Spring Boot 默认配置无法访问静态资源

    问题:将资源放在resources/static目录下,Spring boot不能加载 解决:在启动文件中,添加如下红字部分. @SpringBootApplication @Configuratio ...