Java基础——面向对象

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

相信大家都多多少少的听说过面向对象与面向过程的概念吧,今天阿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方法中调用对象的方法,就直接从方法区里面把方法加载到栈内存中,进行执行,执行完了从栈内存消失

image.png

二、两个对象的内存图:

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

image.png

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

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

image.png

成员变量和局部变量

  • 类中位置不同
    成员变量:在类中方法外
    局部变量:方法内
  • 内存中位置不同
    成员变量:在堆内存中
    局部变量:栈内存中
  • 生命周期不同
    成员变量:随着对象的创建(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将会在后期的文章中为你解答。每天学习一点点,每天进步一点点。

相关文章
|
1月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
67 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
18天前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
12 2
|
2月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
2月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
2月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
35 4
|
2月前
|
Java
接口和抽象类【Java面向对象知识回顾②】
本文讨论了Java中抽象类和接口的概念与区别。抽象类是不能被实例化的类,可以包含抽象和非抽象方法,常用作其他类的基类。接口是一种纯抽象类型,只包含抽象方法和常量,不能被实例化,且实现接口的类必须实现接口中定义的所有方法。文章还比较了抽象类和接口在实现方式、方法类型、成员变量、构造方法和访问修饰符等方面的不同,并探讨了它们的使用场景。
接口和抽象类【Java面向对象知识回顾②】
|
1月前
|
存储 Java 程序员
Java基础-面向对象
Java基础-面向对象
16 0
|
2月前
|
安全 Java Go
面向对象程序设计语言:Java
Java语言语法和C语言和C++语言很接近,很容易学习和使用,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的特性,Java语言不使用指针,而是引用,并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧
56 2
|
3月前
|
Java 数据处理 开发者
【Java基础面试十二】、说一说你对面向对象的理解
这篇文章阐述了面向对象是一种以类和对象为基础,通过封装、继承和多态等概念来模拟现实世界中的事物及其相互关系的程序设计方法,它强调以事物为中心进行思考和系统构造,与结构化程序设计相比,更符合人类的自然思维方式。
【Java基础面试十二】、说一说你对面向对象的理解
|
3月前
|
Java
【Java基础面试十三】、面向对象的三大特征是什么?
这篇文章介绍了面向对象程序设计的三大基本特征:封装、继承和多态,其中封装隐藏对象实现细节,继承实现软件复用,多态允许子类对象表现出不同的行为特征。
【Java基础面试十三】、面向对象的三大特征是什么?