Java学习

Java 对象和类

2019-06-19  本文已影响0人  南风_001

Java作为一种面向对象的语言,支持以下基本概念。

下图中男孩女孩为类,而具体的每个人为该类的对象:

类与对象

Java中的对象

我们生活到出都是对象,大到我们所在的地球,小到路边的一株小草。所有的对象都有自己的状态和行为。我们拿一条狗来举例:它的状态有:名字、品种、颜色,行为有:叫、摇尾巴、吃等。

对比现实中的对象和软件开发中的对象,他们之间有很多相似之处。
软件对象也有状态和行为。软件的状态是属性,行为通过方法来体现。
在软件开发中,。方法操作对象内部状态的改变,对象的相互调用也是通过方法来实现的。

Java中的类

类可以看做是创建Java对象的模板。
通过下面一段代码来理解Java类的定义。

class Dog {
String breed;
int age;
String color;
void barking (){
System.out.println("狗狗在叫");
}
void hangry(){
System.out.println("狗狗饿了");

}
void sleep (){
System.out.println("狗狗要睡了");
}
}
public class DogAction {
public static void main(String[] args) {
        Dog dog = new Dog();
        dog.breed = "京巴";
        dog.age = 2;
        dog.color = "blackColor";
        dog.barking();
        dog.hangry();
        dog.sleep();
    }
}

一个类可以包含以下几种类型的变量

构造方法

每个类多有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认的构造方法。
在创建一个对象的时候,至少要调用一个构造方法,构造方法的名称必须和类名相同。一个类可以又多个构造方法。

例子:

public class Puppy {
    public Puppy() {

    }
}

public Puppy (String name){
    //这是一个构造器仅有一个参数:name
}

创建对象

对象是根据类创建的,在Java中,使用关键字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

访问实例变量和方法

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

/* 实例化对象 */
Dog dog = new Dog();
/* 访问类中的变量 */
dog.breed;
/* 访问类中的方法 */
dog.barking();

实例

public class Puppy {

    int puppyAge;
    public Puppy (String name) {
        //创建带有参数的构造器
        System.out.println("狗狗的名字是:"+ name);
    }
    // setter方法
    public void setAge(int age) {
        puppyAge = age;
    }
    // getter方法
    public int getAge(){
        System.out.println("狗狗的年龄是:"+ puppyAge);
        return puppyAge;
    }
    public static void main(String[] args) {
        /* 创建对象 */
        Puppy puppy = new Puppy("京巴");
         /* 通过方法来设定age */
        puppy.setAge(2);
         /* 调用另一个方法获取age */
        puppy.getAge();
          /*访问成员变量 */
        System.out.println("变量获取的狗狗的年龄是:"+ puppy.puppyAge);
    }
}

编译结果:

狗狗的名字是:京巴
狗狗的年龄是: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;
 /* name*/
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);
    }

}

然后用命令javac Employee.java 进行编译。

程序都是从main方法开始执行。为了能运行这个程序,必须包含main方法并且创建一个实例对象。
下面给出EmployeeTest类,该类实例化2个 Employee 类的实例,并调用方法设置变量的值。
将下面的代码保存在 EmployeeTest.java文件中。

import java.io.*;
public class EmployeeTest {
    public static void main(String[] args) {
    // 使用便利构造器创建两个对象
    Employee empOne = new Employee("小王");
    Employee empTwo = new Employee("小八");
 // 调用成员的方法
  empOne.empAge(20);
  empOne.empDesignation("小精豆");
  empOne.empSalary(1000);
  empOne.printEmployee();
 
  empTwo.empAge(21);
  empTwo.empDesignation("汤姆猫");
  empTwo.empSalary(500);
  empTwo.printEmployee();
    }
}

然后用命令javac EmployeeTest.java 进行编译。使用java EmployeeTest 运行。

得到的结果是:

名字:小王
年龄:20
职位:小精豆
薪水:1000.0
名字:小八
年龄:21
职位:汤姆猫
薪水:500.0

github地址:Java学习

上一篇下一篇

猜你喜欢

热点阅读