zoukankan      html  css  js  c++  java
  • 要学Java理解对象和类是关键

    序言

    我们都知道Java是纯面向对象编程语言,这个对象是什么,类是什么,它们的关系是怎样呢?

    类和对象的关系

    先看一张图:

    image-20210724204444148

    是girl和boy,对象是每个具体的女孩(Lucy、Rose)和男孩(David、Jack)。

    这完美解释了类和对象的关系,即:类是对象的模板

    状态和行为

    对象有两个特征,一个是状态(又叫做属性),一个是行为(又叫做方法),我们拿狗来举例,狗的状态有品种、大小、颜色、年龄;行为有吃、跑、睡觉。如图所示:

    image-20210731160419612

    图的左边是3个狗对象,右边是1个狗。类定义了对象应该有哪些属性和方法,对象根据类定义好的模板,创建了个性化的实例。

    代码实现如下:

    public class Dog {
        // 属性
        String breed;
        int size;
        String colour;
        int age;
     
        // 方法
        void eat() {
        }
     
        void run() {
        }
     
        void sleep(){
        }
    }
    

    构造方法

    在通过类创建对象时,构造方法提供了如何创建对象的细节。Java会给类一个默认的构造方法,你也可以自定义一个或多个构造方法,构造方法命名必须和类名相同,比如:

    public class Dog{
        public Dog(String breed){
        }
    }
    

    代码中定义了2个构造方法,根据参数不同,在构造时会调用相应的构造方法。

    创建对象

    如果没有对象,那么就new一个。Java是通过new关键字来创建对象的。比如使用默认构造方法创建对象:

    Dog myDog = new Dog();
    

    或者使用自定义构造方法创建对象:

    Dog myDog = new Dog("Bulldog");
    

    访问对象属性和方法

    Java和大多数语言一样,采用.运算符访问对象属性和方法,比如:

    public class Dog {
        int age;
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public int getAge() {
            return this.age;
        }
    
        public static void main(String[] args) {
            // 创建对象
            Dog myDog = new Dog();
            // 通过方法来设定age
            myDog.setAge(2);
            // 调用另一个方法获取age
            System.out.println(myDog.getAge());
            // 也可以像下面这样访问成员变量
            System.out.println(myDog.age);
        }
    }
    

    类存放规则

    Java源文件是用类来组织的,存放在源文件中的类遵循下面几项规则:

    • 一个源文件只能有一个public类,可以有多个非public类。
    • 源文件名必须与public类名一致。
    • package语句在首行,其次是import语句,最后是类。

    小结

    本文介绍了对象与类的关系,即:类是对象的模板,根据类创建个性化的对象实例。对象有状态和行为,也叫做属性和方法。类创建对象时会使用构造方法,可以通过.运算符来访问对象属性和方法。文章最后列举了类存放的几条规则,这是Java语法的约束。

    参考资料:

    https://www.runoob.com/java/java-object-classes.html


    所有文章公众号首发!
    如果你觉得这篇文章写的还不错的话,关注公众号“dongfanger”,你的支持就是我写文章的最大动力。

    版权申明:本文为博主原创文章,转载请保留原文链接及作者。
  • 相关阅读:
    3个检测浏览器UserAgent信息的网站
    linux系统下配置网桥(CentOS 5.5)
    squid封禁不带UserAgent的请求
    iptables透明网桥无法使用透明代理错误
    Squid修改用户浏览器的Useragent信息
    MySQL主从复制(MasterSlave)与读写分离(MySQLProxy)实践
    js中格式化时间
    js获取当前月的第一天和最后一天
    JS String.toDate
    Js获取当前日期时间及其它操作
  • 原文地址:https://www.cnblogs.com/df888/p/15086352.html
Copyright © 2011-2022 走看看