Java面向对象编程(上)万事万物皆对象的初体验
Posted 努力的小鳴人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面向对象编程(上)万事万物皆对象的初体验相关的知识,希望对你有一定的参考价值。
❤写在前面
❤博客主页:努力的小鳴人
❤系列专栏:Java基础学习😋
❤欢迎小伙伴们,点赞👍关注🔎收藏🍔一起学习!
❤如有错误的地方,还请小伙伴们指正!🌹🚩在最近的Java学习中,发现Java好多基础知识忘的忘,模糊的模糊,就打算把 【Java】 全部梳理一遍,陆陆续续的文章会放在这里,欢迎订阅一起学习>>>Java基础学习😋
🔥系列传送门:
【附章1Java数组中常见算法】图文并茂详解十大排序算法让您回味无穷
【03章Java数组】程序员必看数组详解
【02章Java基本语法】详细讲解让你重新认识Java基本语法和流程流程控制
【01章Java语言概述】Java学了很久了吧,快回来熟悉熟悉吧(详细)
文章目录
一、面向过程与面向对象
- 二者都是一种思想,面向对象是相对于面向过程而言的。
面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做
面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做
- 面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等
👌面向对象的三大特征
1) 封装 (Encapsulation)
2) 继承 (Inheritance)
3) 多态 (Polymorphism)
二、类和对象
类 (Class)和对象 (Object) 是面向对象的核心概念
🎁注:类是对一类事物的描述,是抽象的、概念上的定义
对象是实际存在的该类事物的每个个体
- 面向对象程序设计的重点是 类的设计
- 类的设计实际上就是 类的成员的设计
👌类的成员构成
代码如下:
class project
//属性,或成员变量
String name;
boolean isflag;
//构造器
public project()
public project(String a,boolean is)
name = a;
isflag = is;
//方法,或函数
public void run()
System.out.println("运行工程project")
public String fix()
return "工程名字:" + name + ",isflag :" + isflag;
//代码块
name = "努力的小鸣人";
time = 13;
isflag = true;
//内部类
class car
String name;
double number;
🎁注:类 = 抽象概念的人
对象 = 实实在在的某个人
👌对象的创建和使用
- 语法: 类名 对象名 = new 类名();
- 使用“
对象名.对象成员
”的方式访问对象成员(包括属性和方法)
代码举例如下:
public class num
public static void main(String args[])
//创建对象
Animal ab=new Animal();
ab.legs=4;//访问属性
System.out.println(ab.legs);
ab.eat();//访问方法
ab.run();//访问方法
- 类的访问机制:
在一个类中的访问机制:类中的方法可以直接访问类中的成员变量
在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员
三、对象的创建和使用的内存解析
👌堆
堆(Heap),此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。这一点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配
👌栈
栈(Stack)是指虚拟机栈,虚拟机栈用于存储局部变量
等。局部变量表存放了编译期可知长度的各种基本数据类型(boolean、byte、char 、 short 、 int 、 float 、 long 、double)、对象引用(reference类型,它不等同于对象本身,是对象在堆内存的首地址),方法执行完,自动释放
👌方法区
方法区(Method Area):用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据
👌匿名对象
匿名对象:如:new Person().shout()
四、属性
- 语法格式:修饰符 数据类型 属性名 = 初始化值
- 修饰符:
●常用的权限修饰符有:private、缺省、protected、public
●其他修饰符:static、final - 数据类型:任何基本数据类型(如int、Boolean) 或 任何引用数据类型
属性名属于标识符
,符合命名规则和规范即可
public class Person
//声明private变量 age
private int age;
//声明public变量 name
public String name = "努力的小鸣人";
👌成员变量与局部变量
成员变量:在方法体外、类体内声明的变量
局部变量:在方法体内部声明的变量
- 二者在初始化值方面的异同:
●同:都有生命周期
●异:局部变量除形参外,均需显式初始化
👌属性的默认初始化赋值
五、方法
- 定义:方法是类或对象行为特征的抽象,用来完成某个功能操作
- 将功能封装为方法的目的是,可以实现代码重用,简化代码
- Java内的方法
不能独立存在
,所有的方法必须定义在类中 - 格式:
修饰符 返回值类型 方法名(参数类型 形参1, 参数类型 形参2, ….){
方法体程序代码
return 返回值;
}
👌方法的重载(overload)
- 概念:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可
- 特点:与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型),调用时,根据方法参数列表的不同来区别
- 代码示例:
//返回两个整数的和
int add(int x,int y)
return x+y;
//返回三个整数的和
int add(int x,int y,int z)
return x+y+z;
//返回两个小数的和
double add(double x,double y)
return x+y;
👌方法参数的值传递机制
- 介绍:方法必须由其所在类或对象调用才有意义
-若方法含有参数:
●形参:方法声明时的参数
●实参:方法调用时实际传给形参的参数值 - 代码举例:基本数据类型的参数传递
public static void main(String[] args)
int x = 5;
System.out.println("修改之前x = " + x);// 5
// **x是实参**
change(x);
System.out.println("修改之后x = " + x);// 5
public static void change(int x)
System.out.println("修改之前x = " + x);
x = 3;
System.out.println("修改之后x = " + x);
- 代码举例:引用数据类型的参数传递
public static void main(String[] args)
Person per = new Person();
per.age = 5;
System.out.println("修改之前age = " + per.age);// 5
// x是实参
change(per);
System.out.println("修改之后age = " + per.age);// 3
public static void change(Person per)
System.out.println("修改之前age = " + per.age);
per.age = 3;
System.out.println("修改之后age = " + per.age);
六、面向对象特征之一:封装性
封装性是把对象的成员属性和成员方法结合成一个独立的相同单位
,并尽可能隐蔽对象的内部细节
包含如下两个含义:
●把对象的全部成员属性和全部成员方法结合在一起,形成一个不可分割的独立单位(即对象)
●信息隐蔽即尽可能隐蔽对象的内部细节,对外形成一个边界只保留有限的对外接口是指与外部发生联系- Java中通过将数据声明为私有的(private),再提供公共的(public)
方法
:getXxx()和setXxx()实现对该属性的操作,
以实现下述目的:
●隐藏一个类中不需要对外提供的实现细节;
●使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;
●便于修改,增强代码的可维护性
👌四种访问权限修饰符
七、构造器/构造方法
- 作用:创建对象;给对象进行初始化
特征
:
●具有与类相同的名称
●不声明返回值类型
●不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值- 格式:
修饰符 类名 (参数列表)
初始化语句;
代码如下:
public class Animal
private int legs;
// 构造器
public Animal()
legs = 4;
public void setLegs(int i)
legs = i;
public int getLegs()
return legs;
👌构造器重载
构造器重载使得对象的创建更加灵活,方便创建各种不同的对象
代码举例:
public class Person
public Person(String name, int age, Date d)
this(name,age);
…
public Person(String name, int age)
…
public Person(String name, Date d)
…
public Person()
…
🎁注:构造器重载,
参数列表
必须不同
🎁总结:这篇文章初讲Java面向对象编程思想和部分基本知识,比较容易理解,会持续更新哦!
👌 作者算是一名Java初学者,文章如有错误,欢迎评论私信指正,一起学习~~
😊如果文章对小伙伴们来说有用的话,点赞👍关注🔎收藏🍔就是我的最大动力!
🚩不积跬步,无以至千里,书接下回,欢迎再见🌹
以上是关于Java面向对象编程(上)万事万物皆对象的初体验的主要内容,如果未能解决你的问题,请参考以下文章