【Java】【类和对象】面向对象

  对象,百度百科给出的解释为:对象,常有两层意思,指行动或思考时作为目标的事物或特指恋爱的对方等含义。从这个概念中可以提炼出来的一句关于对象的描述就是“万物皆是对象”,这是人们常在谈论Java对象时提到的一句话。

 

 

 

 

  

 

  对于万物的解释,应该是具体的、有生命或没有生命的。比如,我看到一条鱼在水里游,我和鱼都是对象,我们是有生命的;我在回答一道考试题目,我和考试题都是对象,我是有生命的,而考试题是没有生命的等等。

  对象是通过你的思考或者感受直接体会到的事物,它/他/她们是具体的事物。你理解了吗?

  1.面向对象

  Java是面向对象的高级编程语言。Java努力将所有的具体事物解析成对象,生成抽象的“类”;然后又通过实例化的方式由“类”创建无数“对象”出来。这个过程涉及两个步骤:第一,攻城狮需要将生活中的对象抽象成Java程序中的Class(类);第二,在实际的业务逻辑操作中,攻城狮又需要通过Class(类)new(新建)出Object(对象),这个过程被称为实例化。其实,这个过程如同我用中文描述了一段文字,然后又得用英文描述同样的文字意思的过程,只不过你需要特别注意英文的语法。这也在一定程度上解释了,Java是一种语言,只不过具有特殊语法而已。

  2.从对象到Class(类)

  ①这里的对象指的是生活中实际存在的业务对象。比如,我正在点击的鼠标;我正使用的笔记本电脑;头顶上的灯;我的卧室;我的同事老张等等。 

  ②拿我的同事老张这个对象来举例:Java攻城狮会从两个方面考虑,特征和行为功能。首先,将老张这个个体进行一次概念抽象,老张是一个人,他具有人的特性和行为功能。特征如:姓名,年龄,性别等;行为功能如:学习、工作等。然后将这些特征和行为功能通过Java的语法描述出来就是,创建一个Person(人)的类,这个类包含了name、age、gender等属性(特征),还包含了study、work等方法(行为功能),这里就体现出了Java面向对象三大特征之一封装的特点。如下代码所示:

 

public class Person{
    private String name;// 姓名
    private Character gender;// 性别
    private Integer age;// 年龄

    public void study(){
        System.out.println("老张在学习...");
    }

    public void work(){
        System.out.println("老张在工作...");
    }
}

 

  3.从Class(类)到Object(对象)

    ①这里的Object(对象)不再是生活中的对象,而是在Java程序中的对象,这个对象映射了生活中的对象,他更加简洁。

  ②实例化老张,代码如下:

public static void main(String[] args){
    Person laozhang = new Person();// 创建对象laozhang
}

  ③这时,系统只是在内存中分配了一些空间给这个对象laozhang,他并没有实际的含义,攻城狮可以使用setter方法对laozhang这个对象进行构造。

// 姓名,性别,年龄的setter方法
public void setName(String name){
    this.name = name;
}
public void setGender(Character gender){
    this.gender= gender;
}
public void setAge(Integer age){
    this.age= age;
}

public static void main(String[] args){
    Person laozhang = new Person();
    laozhang.setName("老张");
    laozhang.setGender('男');
    laozhang.setAge(40);
}

  ④构造完毕之后,还可以通过toString方法,将laozhang这个对象输出显示。

@Override
public String toString() {
    return "Person [name=" + name + ", gender=" + gender + ", age=" + age + "]";
}

public static void main(String[] args) {
    Person laozhang = new Person();
    laozhang.setName("老张");
    laozhang.setGender('男');
    laozhang.setAge(40);
    System.out.println(laozhang);// 这里默认调用上面的toString方法
}

  4.Person类完整代码

public class Person {
    private String name;
    private Character gender;
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Character getGender() {
        return gender;
    }

    public void setGender(Character gender) {
        this.gender = gender;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person [name=" + name + ", gender=" + gender + ", age=" + age + "]";
    }

    public static void main(String[] args) {
        Person laozhang = new Person();
        laozhang.setName("老张");
        laozhang.setGender('男');
        laozhang.setAge(40);
        System.out.println(laozhang);
     // 通过getter方法获取对象的属性值 System.out.println(
"姓名:" + laozhang.getName()); System.out.println("性别:" + laozhang.getGender()); System.out.println("年龄:" + laozhang.getAge()); } }

  运行结果:

Person [name=老张, gender=男, age=40]
姓名:老张
性别:男
年龄:40

posted on 2017-12-07 10:18  扣子开了  阅读(187)  评论(0编辑  收藏  举报

导航