专栏首页阿Q说代码Java基础——面向对象

Java基础——面向对象

相信大家都多多少少的听说过面向对象与面向过程的概念吧,今天阿Q就带大家一起研究一下面向对象。首先给大家说一下概念吧。面向过程其实就是在编程过程中注重步骤性,它所关心的是事件;而面向对象其实是将你所看到的事物抽象成一个对象的过程,他注重的是事物本身,也就是对象。

面向对象的思想特点

a:是一种更符合我们思想习惯的思想

b:可以将复杂的事情简单化

c:将我们从执行者变成了指挥者,角色发生了转换

面向对象的三大特征:封装(encapsulation)、继承(inheritance)、多态(polymorphism)。(这三大特征将在后边一一进行讲解)

要学习对象,首先要理解好类,对象,属性,行为,成员变量,成员方法等几个概念。

  • 类:是一组相关的属性和行为的集合,Java中最基本的单位是类。
  • 对象:该类事物的具体体现。
  • 属性:对象具有的描述信息(名词)
  • 行为:对象能够做什么(动词)
  • 成员变量:对象的属性,和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。
  • 成员方法 就是对象的行为,和以前定义方法是一样的,只不过把static去掉

对象的创建与调用

  • 类名 对象名 = new 类名();
  • 对象名.方法名();
  • 对象名.变量名;
例子:

写一个手机类 Phone ,属性:颜色 品牌 价格,行为:打电话 发短信 玩游戏

    class Phone{
        String brand;
        int price;

        public void call(){
            System.out.println("call");
        }
        public void send(){
            show();
            System.out.println("faduanxin");
        }
        private void show(){
            System.out.println("hehe");
        }
    }
    class Demo_Phone {
        public static void main(String[] args) {
            //创建对象
            Phone p = new Phone();
            //调用对象中的属性并赋值
            p.brand = "锤子";
            p.price = 998;
            System.out.println(p.brand + "..."  + p.price);
            //调用成员方法
            p.call();
            p.sendMessage();
            p.playGame();
        }
    }
一、一个对象的内存图

A:在创建某个类的对象的时候,先把类的字节码文件加载到方法区

B:创建对象的时候 一碰到new 就去堆内存开辟空间, 里面的成员变量 进行默认初始化

引用类型:null int : 0 double: 0.0 char: \u0000 boolean: false

C:如果main方法调用对象的一些属性进行赋值操作 ,那么就用刚被赋的值替换掉原来的初始值

D:如果在main方法中调用对象的方法,就直接从方法区里面把方法加载到栈内存中,进行执行,执行完了从栈内存消失

二、两个对象的内存图:

每new一次 就在堆内存中开辟一个新的空间

三、两个对象三个引用内存图

可以有多个引用同时指向同一个区域,那么这多个引用在进行操作的时候,都是操作的那个区域

成员变量和局部变量

  • 类中位置不同 成员变量:在类中方法外 局部变量:方法内
  • 内存中位置不同 成员变量:在堆内存中 局部变量:栈内存中
  • 生命周期不同 成员变量:随着对象的创建(new的时候创建)而存在 随着对象的消失(当这个内存区域没有引用去指向的时候 垃圾回收器就去回收)而消失 局部变量:随着方法的调用而存在 随着方法的调用完毕而消失
  • 初始化不同 成员变量:有默认初始化 局部变量:没有默认初始化 所以在使用局部变量之前必须要先赋值
  • 注意事项: 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。 基本数据类型变量包括哪些:byte,short,int,long,float,double,boolean,char 引用数据类型变量包括哪些:数组,类,接口,枚举
    class Person {
        String name;                //成员变量
        int num;

        public void speak() {
            int num = 10;           //x和num都是局部变量
            System.out.println(name);   //结果是:null
                
            System.out.println(num);    //结果是:10
            System.out.println(this.num);   //结果是:0
        }
    }

匿名对象

概念:没有名字的对象使用:

  • A:就用对象调用对象里面的方法一次的时候,为了节省代码 注意:调用多次的时候,不适合。匿名对象调用完毕就是垃圾。可以被垃圾回收器回收。
  • B:当作参数传递的时候,如:eat(new Pig())

好了今天就先说到这了,明天继续。想了解更多学习知识,请关注微信公众号“阿Q说”,获取更多学习资料吧!你也可以后台留言说出你的疑惑,阿Q将会在后期的文章中为你解答。每天学习一点点,每天进步一点点。

本文分享自微信公众号 - 阿Q说代码(AQ_Shuo),作者:阿Q

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-01-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java基础-面向对象(四)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • Java基础-面向对象(三)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • Java基础-面向对象(二)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • Java基础-面向对象(五)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • Java基础-面向对象(一)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • Java基础-面向对象思想

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    cwl_java
  • java基础_面向对象_内存分析

    Hello小伙伴们~今天兔妞兔君都好忙,所以给大家分享的是同事帅GG的投稿呢~主要讲的就是面向对象的设计思想、Java中类和对象的定义以及类加载的内存分析。

    萌兔IT
  • Java基础之面向对象

    南风
  • Java基础之面向对象

    在Java中,有句俗语:万物皆对象。我们常常讲Java是一门面向对象的编程语言,那到底什么是“面向对象”、除了“面向对象”还有哪种编程思想、为什么要采用“面向对...

    南风
  • Java基础(二)面向对象(上)

    coders
  • Java基础(三)面向对象(下)

    成员常量:public static final 成员函数:public abstract

    coders
  • 【Java】基础13:面向对象编程

    曾经我一度以为面向对象编程,就是程序员面对着自己的女朋友编程,因为这样会更加有动力有兴趣去写代码,不会脱发,秃顶。

    刘小爱
  • Java基础-Day07,面向对象的认识

    对于面向过程的思想:当需要实现一个功能的时候,看中的是每一个步骤怎么做,整体的过程是怎样的。每一个操作都需要自己亲力亲为。

    软件小生活
  • java基础和面向对象面试题_01

    黑泽君
  • 【JAVA基础&高级】 面向对象篇

    由于近期需要用到基础以及底层的一些知识点,所以借此机会找来了一些学习的资料,用于对 JAVA 面向对象相关的知识点进行复盘、巩固,并且在此将一些重点的知识点做相...

    LCyee
  • 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    Java基础面向对象-静态,单例模式,继承详情知识点。静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承。

    达达前端
  • java基础学习_面向对象(下)02_day09总结

    ============================================================================= ==...

    黑泽君
  • java基础学习_面向对象(下)01_day08总结

    ============================================================================= ==...

    黑泽君
  • java基础学习_面向对象(上)03_day08总结

    ============================================================================= ==...

    黑泽君

扫码关注云+社区

领取腾讯云代金券