java⼊门---对象和类概念详解实例
Java作为⼀种⾯向对象语⾔。⽀持以下基本概念:
多态
继承
封装
抽象
类
对象
实例
⽅法
重载
这篇⽂章,我们主要来看下:
对象:对象(Object)是类(Class)的⼀个实例(instance,实际存在的例⼦)(对象不是个⼥朋友),有状态和⾏为。例如,⼀条狗是⼀个对象,它的状态有:颜⾊、名字、品种;⾏为有:摇尾巴、叫、吃等。
类:类是⼀个模板,它描述⼀类对象的⾏为和状态。
下图中男孩⼥孩为类,⽽具体的每个⼈为该类的对象:
现在让我们深⼊了解什么是对象。看看周围真实的世界,会发现⾝边有很多对象,车,狗,⼈等等。所有这些对象都有⾃⼰的状态和⾏为。拿⼀条狗来举例,它的状态有:名字、品种、颜⾊,⾏为有:叫、摇尾巴和跑。对⽐现实对象和软件对象,它们之间⼗分相似。软件对象也有状态和⾏为。软件对象的状态就是属性,⾏为通过⽅法体现。在软件开发中,⽅法操作对象内部状态的改变,对象的相互调⽤也是通过⽅法来完成。
接下来,我们来看下类。类可以看成是创建Java对象的模板,通过下⾯⼀个简单的类来理解下Java中类的定义:
public class Dog{
String breed;
int age;
String color;
void barking(){
}
void hungry(){
}
void sleeping(){
}
}
⼀个类可以包含以下类型变量:
局部变量:在⽅法、构造⽅法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在⽅法中,⽅法结束后,变量就会⾃动销毁。
成员变量:成员变量是定义在类中,⽅法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中⽅法、构造⽅法和特定类的语句块访问。
类变量:类变量也声明在类中,⽅法体之外,但必须声明为static类型。
⼀个类可以拥有多个⽅法,在上⾯的例⼦中:barking()、hungry()和sleeping()都是Dog类的⽅法。然
后我们来看下构造⽅法。每个类都有构造⽅法。如果没有显式地为类定义构造⽅法,Java编译器将会为该类提供⼀个默认构造⽅法。在创建⼀个对象的时候,⾄少要调⽤⼀个构造⽅法。构造⽅法的名称必须与类同名,⼀个类可以有多个构造⽅法。下⾯是⼀个构造⽅法⽰例:
public class Puppy{
public Puppy(){
}
public Puppy(String name){
// 这个构造器仅有⼀个参数:name
}
}
然后我们来看下对象创建。对象是根据类创建的。在Java中,使⽤关键字new来创建⼀个新的对象。创建对象需要以下三步:声明:声明⼀个对象,包括对象名称和对象类型。(只是定义⼀个空指针)
实例化:使⽤关键字new来创建⼀个对象。(在内存中分配空间,并使指针执⾏这块空间)
初始化:使⽤new创建对象时,会调⽤构造⽅法初始化对象。(对这块内存空间进⾏改造)
下⾯是⼀个创建对象的例⼦:
public class Puppy{
public Puppy(String name){
//这个构造器仅有⼀个参数:name
System.out.println("⼩狗的名字是 : " + name );
}
public static void main(String []args){
// 下⾯的语句将创建⼀个Puppy对象
Puppy myPuppy = new Puppy( "tommy" );
}
}
编译并运⾏上⾯的程序,会打印出下⾯的结果:
⼩狗的名字是 : tommy
然后我们来通过已创建的对象来访问成员变量和成员⽅法,如下所⽰:
/* 实例化对象 */
ObjectReference = new Constructor();
/* 访问类中的变量 */
ObjectReference.variableName;
/* 访问类中的⽅法 */
ObjectReference.MethodName();
下⾯的例⼦展⽰如何访问实例变量和调⽤成员⽅法:
public class Puppy{
int puppyAge;
public Puppy(String name){
// 这个构造器仅有⼀个参数:name
System.out.println("⼩狗的名字是 : " + name );
}
public void setAge( int age ){
puppyAge = age;
}
public int getAge( ){
System.out.println("⼩狗的年龄为 : " + puppyAge );
return puppyAge;
}
public static void main(String []args){
/* 创建对象 */
Puppy myPuppy = new Puppy( "tommy" );
/* 通过⽅法来设定age */
myPuppy.setAge( 2 );
/* 调⽤另⼀个⽅法获取age */
/*你也可以像下⾯这样访问成员变量 */
System.out.println("变量值 : " + myPuppy.puppyAge );
}
}
编译并运⾏上⾯的程序,产⽣如下结果:
⼩狗的名字是 : tommy
⼩狗的年龄为 : 2
变量值 : 2
然后我们来看下源⽂件的声明规则。当在⼀个源⽂件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则:
类有若⼲种访问级别,并且类也分不同的类型:抽象类和final类等。除了上⾯提到的⼏种类型,Java还有⼀些特殊的类,如:内部类、匿名类。
然后来看下java包。包主要⽤来对类和接⼝进⾏分类。当开发Java程序时,可能编写成百上千的类,因此很有必要对类和接⼝进⾏分类。
再来看下import语句。在Java中,如果给出⼀个完整的限定名,包括包名、类名,那么Java编译器就可以很容易地定位到源代码或者类。Import语句就是⽤来提供⼀个合理的路径,使得编译器可以到某个类。例如,下⾯的命令⾏将会命令编译器载⼊
java_installation/java/io路径下的所有类:
import java.io.*;
在下⾯例⼦中,我们创建两个类:Employee 和 EmployeeTest。⾸先打开⽂本编辑器,把下⾯的代码粘贴进去。注意将⽂件保存为Employee.java。Employee类有四个成员变量:name、age、designation和salary。该类显式声明了⼀个构造⽅法,该⽅法只有⼀个参数。
import java.io.*;
public class Employee{
String name;
int age;
String designation;
double salary;
// Employee 类的构造器
public Employee(String name){
this.name = name;
}
// 设置age的值
public void empAge(int empAge){
age = empAge;
安卓开发实例入门
}
/* 设置designation的值*/
public void empDesignation(String empDesig){
designation = empDesig;
}
/* 设置salary的值*/
public void empSalary(double empSalary){
salary = empSalary;
}
/* 打印信息 */
public void printEmployee(){
System.out.println("名字:"+ name );
System.out.println("年龄:" + age );
System.out.println("职位:" + designation );
System.out.println("薪⽔:" + salary);
}
}
程序都是从main⽅法开始执⾏。为了能运⾏这个程序,必须包含main⽅法并且创建⼀个实例对象。下⾯给出EmployeeTest类,该类实例化2个 Employee 类的实例,并调⽤⽅法设置变量的值。将下⾯的代码保存在 EmployeeTest.java⽂件中:
import java.io.*;
public class EmployeeTest{
public static void main(String args[]){
/* 使⽤构造器创建两个对象 */
Employee empOne = new Employee("RUNOOB1");
Employee empTwo = new Employee("RUNOOB2");
// 调⽤这两个对象的成员⽅法
empOne.printEmployee();
empTwo.printEmployee();
}
}
编译这两个⽂件并且运⾏ EmployeeTest 类,可以看到如下结果:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论