zoukankan      html  css  js  c++  java
  • Java 从入门到进阶之路(六)

    之前的文章我们介绍了 Java 的数组,本章我们来看一下 Java 的对象和类。

    Java 是一种面向对象语言,那什么是对象呢,对象在编程语言中属于一个很宽泛的概念,我们可以认为万事万物都是对象,每个对象都有其状态和行为,例如一只狗会有颜色,品种,性别等状态,也有跑,吃,睡等行为。

    在编程语言中,会用一个类来承载这个对象,类是一个模板,它描述一类对象的行为和状态。

    在之前的文章中我们没有引入对象的概念,如果我们想要打印输出一个人的基本信息,如下:

     1 public class HelloWorld {
     2     public static void main(String[] args) {
     3         String name = "zhangsan";
     4         int age = 18;
     5         String gender = "男";
     6         print(name,age,gender); // 姓名:zhangsan 年龄:18 性别:男
     7     }
     8 
     9     static void print(String name, int age, String gender) {
    10         System.out.print("姓名:"+ name);
    11         System.out.print("年龄:"+ age);
    12         System.out.print("性别:"+ gender);
    13     }
    14 }

    上面其实是一个面向过程的编程,我们先定义一个 print 方法,分别传入姓名,年龄,性别,然后再分别打印输出,我们就可以定义变量,年龄,性别,调用该 print 方法来实现我们想要的功能。

    其中有一个问题就是当我们需要再次输出另一个人的信息时,我们需要再次将 name,age,gender 传入,其实我们可以将这三个变量定义到一个对象中来使用,如下:

     1 public class HelloWorld {
     2     public static void main(String[] args) {
     3         Emp e = new Emp(); // 创建一个 Emp 对象
     4         e.name = "zhangsan";
     5         e.age = 18;
     6         e.gender = "男";
     7         print(e); // 姓名:zhangsan 年龄:18 性别:男
     8     }
     9 
    10     static void print(Emp e) {
    11         System.out.print("姓名:"+ e.name);
    12         System.out.print("年龄:"+ e.age);
    13         System.out.print("性别:"+ e.gender);
    14     }
    15 }
    16 
    17 class Emp{
    18     String name;
    19     int age;
    20     String gender;
    21 }

    在上面的代码中,我们将 print 方法中传入的变量变成了一个 Emp 对象,Emp 对象是我们自己定义出来的,它和我们之前所讲的 Array 其实是一个道理:  arr = new int[5]; ,生成一个 5 个长度的数组。

    在上面的代码中,我们定义的 print 方法其实作用就是用于输出打印我们需要的信息,我们同样也可以将其放到我们定义的 Emp 类中,如下:

     1 public class HelloWorld {
     2     public static void main(String[] args) {
     3         Emp e = new Emp(); // 创建一个 Emp 对象
     4         e.name = "zhangsan";
     5         e.age = 18;
     6         e.gender = "男";
     7         e.print(); // 姓名:zhangsan 年龄:18 性别:男
     8     }
     9 }
    10 
    11 class Emp {
    12     String name;
    13     int age;
    14     String gender;
    15 
    16     void print() {
    17         System.out.print("姓名:" + name);
    18         System.out.print("年龄:" + age);
    19         System.out.print("性别:" + gender);
    20     }
    21 }

    至此我们其实就已经果果面向对象的思维定义了一个类,当我们需要再定义另一个人的信息时,直接调用该对象的属性和方法就可以了。

    在我们初学编程语言的时候,都是由面向过程慢慢开始的深入到面向对象的,但面向过程由很多缺点,如下:

    1、缺乏对数据的封装

    2、数据和方法分离了

    如上面的例子中最开始我们需要什么数据都是先自己定义,数据 name age gende 和方法 print 是分开的,后来我们改为统一到一个 Emp 类中,这样就做到了数据和方法的统一。

    我们接下来看下面的代码:

     1 public class HelloWorld {
     2     public static void main(String[] args) {
     3         Emp e = new Emp(); // 创建一个 Emp 对象
     4         e.print(); // 姓名:null 年龄:0 性别:null
     5     }
     6 }
     7 
     8 class Emp {
     9     String name;
    10     int age;
    11     String gender;
    12 
    13     void print() {
    14         System.out.print("姓名:" + name);
    15         System.out.print("年龄:" + age);
    16         System.out.print("性别:" + gender);
    17     }
    18 }

    在创建 Emp 对象后,我们并没有对类的 name age 和 gender 进行赋值,直接调用 print() 方法,结果并没有出现编译错误,这是由于在我们定义一个变量的时候,java 会为我们提供一个默认的值,字符串为 null,数字为 0。

  • 相关阅读:
    MVC模式-----struts2框架(2)
    MVC模式-----struts2框架
    html的<h>标签
    jsp脚本元素
    LeetCode "Paint House"
    LeetCode "Longest Substring with At Most Two Distinct Characters"
    LeetCode "Graph Valid Tree"
    LeetCode "Shortest Word Distance"
    LeetCode "Verify Preorder Sequence in Binary Search Tree"
    LeetCode "Binary Tree Upside Down"
  • 原文地址:https://www.cnblogs.com/weijiutao/p/11082571.html
Copyright © 2011-2022 走看看