zoukankan      html  css  js  c++  java
  • [Java初探08]__简单学习Java类和对象

    • 前言
      在前面的学习中,我们对面向对象的编程思想有了一个基本的了解,并且简单的了解了类和对象的定义.那么类和对象在Java语言中是如何表现的,这次,就从实际出发,学习一下一下类和对象在Java语言中的使用.

    那么,这里为什么要先将类,而不是像之前一样先讲对象呢,那是因为在前面的学习中,我们知道了,对象是类的一个实例.类是封装兑现属性和行为的载体,所以对象的一切都在类之中,对象的属性,行为的调用都得先通过实例才能使用,它们是一个包含关系,对象是依赖于类的.

    • 类在Java中的创建

    我们都知道,在我们新建一个Java文件的时候,大多是这样的.

    2019-4-8-01.png

    这充分说明了在Java语言中,一切都是基于类与对象建立的.

    类在Java语言中式通过class关键字定义的.而且还可以使用各种修饰符对其权限进行限定,关于修饰符,在前面也有讲到过.

    class cat{
        
    }
    

    • 类的成员变量与成员方法

    我们通过观察类文件的结构可以发现是这样的.

    2019-4-8-02.png

    我们可以发现:

    • 在一个Java文件中不仅是可以声明多个类的,还可以在类的内部定义一个类,这可以叫做类的嵌套使用了,这种机制应该就是Java中的内部类的特性.我们在后面在做详细学习.

    • 我们还可以在Structure视窗里发现,类的结构是由方法体和成员变量组成的.

    • 成员变量

    我们已经了解到类封装对象属性和行为的载体,而对象的属性是通过成员变量定义的,行为是通过方法创建的.一个类的成员变量就是封装对象的某种属性,成员变量也可以通过修饰符限定其使用范围,因此有静态变量,成员变量,局部变量,常量等区分,关于它们之间的联系与区别,这一点在前面的Java基础中应该有讲过.

    • 成员方法

    我们可以通过实例化一个对象,然后调用其属性和方法.而在通常情况下,一个对象的属性是不会在封装类就被初始化的,只会被定义,应为对象的属性通常都是可变的,我们只能通过实例化对象,来确定一个具体对象的具体属性.

    那么我们应该如何来调用到对象的属性和设置对象的属性呢.这时我们就会理所当然的想到,当然时使用方法了嘛.是的我们只需要在类中封装获取和设置对象属性的方法就可以了.

    而这类获取和设置成员变量的方法就叫做成员方法.(因为其都具有很明显的特征和作用)

    // 成员方法,获取成员变量
        public boolean getindepentThing(){
            return this.independentThing;
        }
        // 成员方法,设置成员变量
        public void setindepentThing(boolean independentthing){
            this.independentThing = independentthing;
        }
    
    • 类的构造方法
      构造方法是类中的另以特殊的方法体,构造方法是一个与类名相同的方法,对象的创建就是通过构造方法来完成的.每当类实例化一个对象时,类都会调用构造方法,所以构造方法其实就是相当与实例化对象时的初始化一样.

      • 构造方法是没有返回值的
      • 构造方法的名称要与本类的名称相同.

    为什么构造方法的名称必须与类名称相同,我们看看对象的实例化:

    animal animal = new animal();
    

    如此,我们大概明白了,之所以构造方法的名称和类名称相同,是为了在对象的实例化的时候,通过new animal(),使构造方法在对象的实例化的同时也运行了,这样才能实现在实例化对象就能够初始化对象的属性的目的.构造方法的存在,解决了对象的初始化问题,使得我们每次实例化的对象都拥有我们想要设定的属性值,之后我们就可以直接调用其属性,而不需要频繁的使用成员方法来设定对象的值.

        /**
         * 构造方法
         */
        public animal(){  // 无参的构造方法.
            this.independentThing= false;
    }
        public animal(boolean independentthing){  // 有参的构造方法
            this.independentThing = independentthing;
    }
    
    • 类中普通的方法

    在之前的学习中我们已经了解了关于方法在Java中的定义,使用返回值类型修饰符+方法名.即可创建一个方法体.而我们常常会使用到的void修饰符是分特殊的,它不需要我们return一个值,void的字面意思就是空,我们治理只需要了解到void修饰的方法体,是不需要返回值的.

    在类和对象的学习中,我们又了解到,类中的方法其实就是对某个对象的行为的一种封装,所以类中最常见的方法,其实就是这种对行为封装的方法,也可以说是我们自定义的方法,因为这种方法的所有内容都是我们自定义的.这类方法其实才是最普遍存在于类中的.

    void eat(){
            System.out.println("动物的吃行为");
        }
    
    • 类的主方法
      我们在前面的学习中,了解到一个类只能有一个主方法,而这个主方法是用来让Java编译器识别,编译运行的.为什么要这样设计,我们其实已经可以分析的出来了,因为Java语言是基于类和对象的基础上的一门语言,其基本的组成单位其实可以说就是众多的类,然后由众多的类组成的类库组成了Java的标准类库,我们都是基于Java标准类库来编程的,如果不定义一个主方法用来编译运行,那么各种类中的不计其数的方法该如何来标记,如何知道该编译运行哪个方法,调用哪个类.所以类的主方法的存在是必然的一个演变过程.

    类的主方法是类的入口点,它定义了程序从何处开始,主方法提供程序流向的控制,Java编译器通过主方法来执行程序.

    主方法的语法是固定的:

    public static void main(String[] args){
    // 方法体
    }
    

    我们从主方法的定义可以看到其具有的一些特性:

    • 主方法是一个静态的方法,所以如果要直接在主方法中调用其他方法,则调用的方法也必须是静态的才行.

    • 主方法是没有返回值的.

    • 主方法的形式参数是数组,其中arg[0]~arg[n]表示程序的第一个参数到第n个参数.可以使用args.lenght获取到这个值.


    • 对象

    我们现在已经非常了解了,对象就是由类抽象出来的一个实例.比如人类中有一个叫小舍,性别为男的人.那么这个人就是从人类中实例化出来的一个对象.

    • 对象的创建

      其实我们在之前的学习中已经或多或少的有使用到对象,我们是这样创建一个对象的:

    animal animal = new animal();
    animal animal12 = new animal(true);
    
    

    在字符串的学习中,我们使用过String类的构造方法,创建一个初始化对象.

            String astr3 = new String(a,0,2);
            String astr4 = new String(b);
            String astr5 = new String(b,0,2);
    

    在Java语言中我们通过new操作符来创建对象.

    2019-4-8-01.gif

    这里其实有一点小疏忽,一般情况下,类的成员变量一般不会设置成公开的,需要使用private修饰符将其修饰为私有的,然后通过成员方法来访问和设置它的值.

    private boolean independentThing;
    
     System.out.println(animal.getindepentThing());
     animal1.setindepentThing(false);
    

    我们实例化了对象之后,我们就可以通过对象来调用其属性和行为(就是方法)了

            animal.eat();
            System.out.println(animal.independentThing);
    
    
    • 对象的引用

    在Java语言中,尽管一切都可以看作对象,但实际上的操作标识符是一个引用,那么引用在Java中是怎么体现的.

    // 类名 对象引用名称,
    animal animal;
    

    实际上,引用并不一定要有一个对象相关联,引用和对象相关连的语法是:

    animal animal = new animal();
    

    new就是创建对象的操作符,整个语句相当于创建一个引用animal类的对象,这就是实例化对象的过程.

    • 对象的比较
      我们知道在程序的实际中经常会使用到比较判断,而我们在前面的基础数据类型和运算符的学习中知道了,符是用来比较两个数据的.那么我们现在又知道了对象在Java中的地位是举足轻重的,并且会时长用到,那么对象的比较是否也可以使用符来比较呢.
            System.out.println("字符串是否和abc相等:"+mstr.equals("abc"));
            System.out.println("字符串是否和abc相等:"+(mstr=="abc"));
    

    显然,是不行的,因为我们在前面字符串的比较时就简单的了解到,号是不能用来比较两个String类型的值的,需要通过String类的equals()方法比较.对象的比较是通过其相应类的equals()方法进行比较的.而不能使用符比较,这是因为==比较的是两者引用的地址是否相等.而equals方法比较的才是比较两个对象引用的内容是否相等.

    • 对象的销毁

    每个对象都有声明周期,当生命周期结束的时候,对象就会被销毁,其分配的内存就会被回收,在其他一些语言中,对象的内存回收可能会需要手动销毁回收,但在Java语言中,拥有一整套完整的垃圾回收机制,可以根据对象的生命周期来回收其内存,Java的垃圾回收机制也不单单运用在对象上,它对于Java的内存回收有一整个控制回收机制.我们在这里就简单的了解一下就行.

    • 源代码
    package day_4_8;
    
    /**
     * @outhor xiaoshe
     * @date 2019/4/8  - @time 17:22
     *类
     * 在Java语言中,类是使用class关键字来定义的
     * 类可以有不同种,通过类前面的关键字来修饰
     * 也就是Java修饰符,一般情况下,修饰符限定了类的使用范围.
     * class后接类名,class是定义类的关键字,具体的类名需要自定义命名,
     * 命名规则是需要遵循java标识符的规则的.
     */
    public class sty_class {
        // 通过主类里的主方法来调用不同类的不同方法.因为只有主方法才会被编译运行
        // 所以想要使用任何类,或类的方法的使用.都需要通过主方法调用才能实现.
        public static void main(String[] args) {
            // 想要调用某个类的某个方法,就需要实例化一个这个类的对象,通过实例化对象调用方法.
            // 无参的构造方法构建对象.
            animal animal = new animal();
            animal.eat();
            System.out.println(animal.getindepentThing());
            //有参的构造方法,构建对象
            animal animal1 = new animal(true);
            animal1.setindepentThing(false);
            System.out.println(animal1.getindepentThing());
            System.out.println(args.length);
        }
        public static class book{
    
        }
    }
    /**
     * 我们在同一个java文件里,可以声明多个不同的类.
     * 声明animal动物类.
     * 通过类来封装对象的属性和行为.
     */
    class animal{
        // 在哦Java语言中,通过类的成员变量表示对象的属性.
        private boolean independentThing;
    
        // 成员方法,获取成员变量
        public boolean getindepentThing(){
            return this.independentThing;
        }
        // 成员方法,设置成员变量
        public void setindepentThing(boolean independentthing){
            this.independentThing = independentthing;
        }
        /**
         * 构造方法
         */
        public animal(){  // 无参的构造方法.
            this.independentThing= false;
        }
        public animal(boolean independentthing){  // 有参的构造方法
            this.independentThing = independentthing;
        }
        // 在Java中通过构建方法的形式,来表示对象的行为.
        void eat(){
            System.out.println("动物的吃行为");
        }
    }
    

    • 后记

    类和对象可以说是Java语言的基础之基础,重中之重,理解清楚面向对象思想和学明白Java类和对象的机制是学习Java语言的必不可缺的阶段,在理解它们的基础上学习Java能够达到事半功倍的地步.因为可以说Java语言的一切几乎都是建立在类和对象上的,当你把类和对象理解透彻了,在其基础上学习其它知识怎会不更加简易呢.?


    更新时间:
    2019-4-8
    21:04

  • 相关阅读:
    轻重搭配
    EF的优缺点
    使用bootstrap-select有时显示“Nothing selected”
    IIS发布 HTTP 错误 500.21
    js添加的元素无法触发click事件
    sql server查看表是否死锁
    sql server把一个库表的某个字段更新到另一张表的相同字段
    SQLSERVER排查CPU占用高的情况
    SQL server中如何按照某一字段中的分割符将记录拆成多条
    LINQ to Entities does not recognize the method 'System.DateTime AddDays(Double)' method, and this method cannot be translated into a store expression.
  • 原文地址:https://www.cnblogs.com/gemuxiaoshe/p/10673425.html
Copyright © 2011-2022 走看看