多语言展示
当前在线:548今日阅读:103今日分享:49

Java从入门到放弃教程三 --java的对象和类

Java 是一种面向对象的语言。支持以下基本概念--多态性,继承,封装,抽象,类,对象,实例,方法,消息分析。在这一篇中,我们将介绍两个内容:类和对象。那么什么是Java对象,什么是java类呢?对象--对象有状态和行为。比如:一只狗有颜色,名字等状态,有摇尾巴,吃东西等行为。对象是类的一个具体实例。类--类就是描述对象的一种模板。
工具/原料
1

jdk10

2

vscode

Java中的类和对象

现实世界中,我们周围有很多对象,比如人,汽车,狗等。所有这些对象都有状态和行为。类则是一个模板,它描述了自己可以创建什么样子的对象。狗的类public class Dog {    String breed;// 状态描述,品种    int age;//状态描述,年龄    String color;//状态描述,颜色     void barking() {//行为:狗叫    }     void hungry() {//行为:狗会饥饿    }     void sleeping() {//行为:狗睡觉    } }

Java变量

有三种变量: 在方法、构造函数或块内定义的局部变量−变量称为局部变量。该变量将在方法中声明和初始化, 并且该变量在方法完成后将被销毁。实例变量−实例变量是类中的变量, 但在任何方法之外。在实例化类时, 将初始化这些变量。可以从该特定类的任何方法、构造函数或块内部访问实例变量。类变量−类变量是在类中声明的变量, 在任何方法之外, 使用静态关键字。

构造器(构造函数)

每一个类都会有至少一个构造器。如果我们在类中不写构造器,java会自己创建一个默认的构造器。每次对象被创建的时候(类实例化),那么构造器就会被调用执行。构造器的主要规则就是他们的名字要和类名相同。比如,我们定义一个小狗类public class Puppy{    public Puppy(){    }    public Puppy(String name){    }}

创建一个对象

之前我们说过,【类】是【对象】的模板。所以对象是从类中创建出来的。类似工厂的模具,零件都是从模具中出来的。在Java中,我们使用new这个关键词来创建一个新的【对象】只需3步,声明,实例化,初始化。请看例子:public class Puppy{    public Puppy(String name){        //构造函数(构造器)        System.out.println('name的值为:'+name);    }    public static void main(String []args) {        // 创建一个对象,叫做myPuppy        // ①变量声明,指定类对象    ②new用来创建对象 ③ new后面跟着构造函数,对新的对象进行初始化。    // {       ①     } {② } {      ③       }        Puppy myPuppy = new Puppy( 'tommy' );     }}编译运行C:\javaapp>javac -encoding UTF-8 Puppy.javaC:\javaapp>java Puppyname的值为:tommyC:\javaapp>

访问对象实例的变量和方法
1

实例变量和方法可以通过创建对象来访问。首先,创建一个对象: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' );        /* 调用【类】的方法来设置狗狗的年龄 */       myPuppy.setAge( 2 );        /* 调用【类】的方法来获取狗的年龄 */       myPuppy.getAge( );        /* 访问实例变量 */       System.out.println('变量的值 :' + myPuppy.puppyAge );    } }

2

编译运行结果:

Java包

java使用包来管理【类】和【接口】; 如果给定了完全限定名,java编译器很容易定位到源代码。例如: import java.io.*;//编译器将导入 java安装目录/java/io目录下面所有的类。

Java实战1-Employee.java

编写Employee.java文件import java.io.*;public class Employee {   // 定义4个实例变量   String name;   int age;   String designation;   double salary;   // 员工类的构造函数   public Employee(String name) {      this.name = name;   }   // 把员工的年龄赋值给内部的age变量.   public void empAge(int empAge) {      age = empAge;   }   /* 给职位赋值 */   public void empDesignation(String empDesig) {      designation = empDesig;   }   /* 给薪水变量赋值 */   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);   }}

Java实战1-EmployeeTest.java文件

import java.io.*;public class EmployeeTest {public static void main(String args[]) {/* 通过构造器(构造函数)创建员工对象 */Employee empOne = new Employee('James Smith');Employee empTwo = new Employee('Mary Anne');// 调用每个对象方法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();}}

Java实战1-编译运行

c:\javaapp>javac -encoding UTF-8 Employee.javac:\javaapp>javac -encoding UTF-8 EmployeeTest.javac:\javaapp>java EmployeeTest名字:James Smith年龄:26职位:Senior Software Engineer薪水:1000.0名字:Mary Anne年龄:21职位:Software Engineer薪水:500.0

推荐信息