类和对象

一、简述面向对象

面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的,在70年代的Smaltalk语言之中进行了应用,后来根据面向对象的设计思路,才形成C++,而由C++产生了Java这门面向对象的编程语言。
在面向对象设计之前,广泛采用的是面向过程,面向过程只是针对于自己来解决问题。面向过程的操作是以程序的基本功能实现为主,实现之后就完成了,也不考虑修改的可能性,面向对象,更多的是要进行子模块化的设计,每一个模块都需要单独存在,并且可以被重复利用,所以,面向对象的开发更像是一个具备标准的开发模式。
对于面向对象的开发来讲也分为三个过程:OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程)。

二、类和对象简介

:类是现实世界在计算机中的反映,它将数据和对这些数据的操作封装在一起。是抽象概念的集合。
对象:类的实例。每个对象具有自己独立的属性,依靠不同属性来区分不同对象。

三、面向对象基本特征

在Java中面向对象有三大基本特征:
(1)封装:保护内部的操作不被破坏;
(2)继承:在原本的基础之上继续进行扩充;
(3)多态:在一个指定的范围之内进行概念的转换。
封装:如果是类中内部使用,成员变量和方法使用private访问修饰符修饰,如需要开放给外部调用赋值,一般会保持成员变量为private,对外提供一对get\set方法进行赋值。
继承:当公用逻辑是公用时,抽取到父类,不同子类的行为不同时,再提供抽象方法或空实现方法让子类进行复写,继承使用extend关键字。
多态:子类复写父类方法,子类实例赋值给父类类型,调用父类方法,会调用子类复写后的方法。
重载(overload)和重写(override)的区别:
重载:是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。
重写
:是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。

四、类的定义和使用

定义:Java中使用class来定义一个类

class Student{
  属性;
  方法;
}

例子:

class Student {
    private String name;
    private int age;
    private int id;
    public void study(){
        System.out.println(name+"在学习");
    }

在定义完类后,不能直接使用,要使用一个类需要将他实例化:
格式:声明加实例化对象

Student student = new Student();

引用数据类型与基本数据类型最大的不同在于:引用数据类型需要内存的分配和使用。所以,关键字new的主要功能就是分配内存空间,也就是说,只要使用引用数据类型,就要使用关键字new来分配内存空间。
当一个实例化对象产生之后,可以按照如下的方式进行类的操作:
对象.属性:表示调用类之中的属性;
对象.方法():表示调用类之中的方法。

五、从jvm内存来分析

(1)堆内存:保存对象的属性内容。堆内存需要用new关键字来分配空间;
(2)栈内存:保存的是堆内存的地址(在这里为了分析方便,可以简单理解为栈内存保存的是对象的名字)。
在这里插入图片描述
在代码执行:Student student后会在栈内存出现student指向空。执行student = new Student()后会在堆内存中出现Student类中定义的属性栈内存中的student会指向堆内存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值