JAVA 面向对象

面向过程和面向对象的区别

  面向过程 ➡ 面向对象
  执行者 ➡ 指挥者

面向对象的概念

三个阶段:

  1. 面向对象分析
    对象:我,爸爸,妈妈
    类:人类
    类里具有:
    (1)动词 ➡ 动态特性 ➡ 方法
    (2)名词 ➡ 静态特性 ➡ 属性
  2. 面向对象设计
  3. 面向对象编程

对象与类

  1. 含义
    对象:具体的事务、实体。
    类:对象向上抽取出像的部分,形成类。类是抽象的,是一个模板。
    一边先写类,再根据类创建对应的对象。
    eg:类是我的课本,数据结构书是一个具体的对象。
  2. 创建
    过程:
    (1)在第一次遇到一个类的时候,对这个类进行加载,只需加载一次;
    (2)创建对象,在堆中开辟空间;
    (3)对对象进行初始化操作,属性赋值都是默认的;
    (4)new关键字调用构造器,执行构造方法,在构造器中对属性重新进行赋值。
    在这里插入图片描述
  3. 属性的分类
    静态属性(类变量)
    非静态变量(实例变量)

局部变量与成员变量

区别成员变量局部变量
代码位置方法外方法/代码块内
作用范围当前类中的很多方法当前一个方法/代码块
是否有默认值没有
是否要初始化不需要一定要
内存中位置堆内存栈内存
作用时间当前对象从创建到销毁当前方法从开始执行到执行完毕

构造器

  • 创建一个Person类具体的对象/实例/实体的过程:
    (1)第一次遇到Person的时候,进行类的加载(只加载一次;
    (2)创建对象,为这个对象在堆中开辟空间;
    (3)为对象进行属性的初始化操作 ;
    (4)new关键字实际是在调用一个方法,称为构造方法(构造器)
  • 调用构造器的时候,如果你的类中没有写构造器,系统就会默认分配一个,只是对我们不可见。可以自己显式地将构造器编写出来。
    – 构造器格式:[修饰符] 构造器的名字(){ }
    – 构造器和方法的区别:构造器没有方法的返回值类型,方法体内不能有return语句,构造器的名字必须和类名一样。
    – 构造器的作用:给属性赋值,而不是创建对象。
Person A = new Person();//先右遍赋值,再左边接收
  • 一般保证空参构造器的存在,不在其中进行属性赋值操作,一般重载构造器,在重载构造器中进行属性赋值操作,重载之后,系统不会默认分配构造器,需自己构造。

在这里插入图片描述

内存分析

  • java程序运行之后,虚拟机JVM会向内存申请一块儿空间,
    该空间专门给程序中产生的变量、数据等用。
  • 栈:局部变量,形参
    堆:new出来的对象,数组
    方法区:字节码信息,字符串常量池
public class Person{
	int id;
	int age;
	public static void main[String args]{
		person p1 = new Person();
	}
}

在这里插入图片描述

public class Person
{
	int id;
	int age;
	String name;
	public Person(int a,int b,String c){
	id=a;
	age=b;
	name=c;
	}
	public static void main(String args[]){
		Person p = new Person(1,20,乐乐)}
}

在这里插入图片描述

this的使用

this指代当前对象,其功能为:

  • 修饰属性
      当形参名字和属性的名字重名时,会出现就近原则,此时使用this修饰,指代创建的对象。不发生重名问题,可以省略this。

    在这里插入图片描述

在这里插入图片描述

  • 修饰方法(在同一个类中,方法可以互相调用)
      方法中,this指代正在调用方法的对象,可以省略。

在这里插入图片描述

  • this可以修饰构造器(在同一个类中,构造器可以互相调用)
      this修饰语句必须放在第一行。
    在这里插入图片描述

static的使用

  • 修饰属性
      在类加载的时候,会将静态内容也加载到方法区的静态域中,静态的内容先于对象存在,这个静态内容被所有该类的对象共享。

在这里插入图片描述

  1. 可以使用类名.属性名对其访问。
      不创建对象也可以访问,因为在加载Test类的时,属性已经被加载在静态域中。(静态内容先于对象存在)
Test.sid = 20;

在这里插入图片描述

  1. 适用场景
      某些特定的数据在内存中共享。
    在这里插入图片描述
  2. 属性的分类
    静态属性(类变量)
    非静态变量(实例变量)
  • 修饰方法

  • 修饰代码块

  • 修饰内部类

封装

继承

多态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值