Java 25天基础-DAY 05-面向对象

简介: java面向对象
面向对象:
  1. 面向对象是相对面向过程而言;
  2. 面向对象和面向过程都是一种思想;
  3. 面向过程,强调的是功能行为
  4. 面向对象,将功能封装进对象,强调具备了功能的对象;
  5. 面向对象是基于面向过程的。
  93a304a44fa71d720d092bc545620b09e969d894

 
面向过程和面向对象:
面向过程的角色是执行者的角度。
面向对象的角色是指挥者的角度。
 
面向对象,是一种变成的思想,能把复杂的问题简单话,把执行者,变成指挥者。
思想比较抽象,可以举例说明。
事例:
  1. 电脑的窗口中有最大化,最小化,关闭;将这三个功能封装到窗口中就是面向对象的应用。
  2. 人开门:开的功能是门自己内部实现的,如折页等是如何工作的,门就成为对象。
  3. 人开车:车的功能是又内部实现的,如发动机如何工作,车就成为对象。
  4. 笔记本电脑:电脑只给了一些外部的接口提供给人使用,至于内部的功能对于使用者则不必了解。笔记本电脑就是对象。
  5. 买电脑:对于不懂电脑的人来说他只要找个懂电脑的人帮忙买就OK了,他只需要得到结果,至于懂电脑的人功能则不必了解,懂电脑的人就是对象,封装了懂电脑的功能。
  6. 老板招聘:当老板招聘开发人员的时候,开发人员具备了开发的功能,公司只要使用就可以,这时受聘者变成了对象。
  7. 点菜:当你去吃饭时,跟服务员点菜,至于服务员如何记录如何跟后厨交代,则不必要管,服务员就是对象,你调用了他点菜的功能,然后服务员告诉后厨做一个XX菜,这时服务员又调用了厨师的做菜功能,厨师就是对象。
 
总之万物皆对象。
 
写程序要先面向对象,不要上来就写程序。
                  
名词提炼法:
人开门:
         开门(门)
 
                   开();
 
 
面向对象有三个特征:
         1 、封装
       2 、集成
       3 、多态
开发其实就是找对象使用,没有对象,就创建一个对象。
找对象,建立对象,使用对象,维护对象的关系。
 
类和对象的关系:
         类就是:对现实生活中事物的描述
       对象:就是这类事物,实实在在存在个体。
 
现实生活中的对象:张三,李四
想要描述:提取对象中共性内容。对具体的抽象
描述时:这些对象的共性有:姓名,年龄,性别,学习JAVA 的功能。
 
映射到Java 中,描述就是class 定义的类。
具体对象就是对应Java 在堆内存中用new 建立实体。
 
类与对象的图例 
4fde13f327b2efd27b1c77e7be55ea41474b2383

类与对象的图例
可以理解为:
类就是图纸
       汽车就是堆内存中的对象
 
匿名对象
 
封装:
       封装是指隐藏对象的属性和现实细节,仅对外提供公共访问方式
好处:
       将变化隔离
       便于使用
       提高重用性
       提高安全性
封装原则:
       将不需要对外提供的内容都隐藏起来
       把属性都隐藏,提供公共方法对其访问。


例1:
class car
{
//描述颜色
String color = "red"; //red是显示初始化值,实际对象C产生时该值为null
//描述轮胎数
int num = 6;
//运行行为
void run ()
{
System.out.println (color+"...................."+num);
}
/ /属性对应的是类中的变量,行为对应的是类中的函数(方法)
//其实定义类,就是在描述事物,就是在定义属性和行为。属性和行为共同称为类中的成员(成员包括成员变量和成员函数)
//成员变量作用于整个类中,局部变量作用与函数中或者语句中。
//在内存中的位置,成员变量在堆内存中,因为对象的存在,才存在在内存中。局部变量在栈内存中。

}




class cardemo
{
public static void main(String[] args)
{
//生产汽车,在Java中通过new操作符来完成,其实就是在堆内存产生一个实体。
car c = new car (); //c就是类类型变量。记住:类类型变量指向对象。
//需求:将已有车的颜色改成黄色,指挥该对象做使用。在Java中指挥方式是
c.color = "blue";

c.run();

car c1 = new car ();
c1.color = "black";

c1.run();
}
}

例2、左侧图单个引用指向单个对象,右侧图多个引用 指向同一个对象
7808f2c49eed070a29547d0c80583454e85bd758
例3:匿名对象

匿名对象使用方式一、
当对象的方法只调用一次时可以使用匿名对象完成,
如果对一个对象进行多个成员调用必须给这个对象起名。
匿名对象使用方式二、可以将匿名对象作为实际参数进行传递


class car2
{
public static void main(String[] args)
{
car c= new car();
c.run();
c.num =5;
new car ().run();//匿名方式。
/*匿名对象使用方式一、
当对象的方法只调用一次时可以使用匿名对象完成,
如果对一个对象进行多个成员调用必须给这个对象起名。
匿名对象使用方式二、可以将匿名对象作为实际参数进行传递
*/
car n = new car ();
show (n);
}

//匿名对象的使用方式二、
//需求:汽车修配厂,对汽车进行改装,将来的车都改成黑色,3个轮胎。

public static void show (car c) //创建一个car类型的c 这个和 int num这个参数传递一样。
{
c.num=3;
c.color="black";
c.run();
}

}

方式一画图解释:
0b974af5f298cd8b86d979038539f6b040e64562

方式二画图解释:
d8a69b23a46b2154ec99771c569c256e39414e2a

目录
相关文章
|
3天前
|
安全 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版)
|
4天前
|
安全 Java Go
面向对象程序设计语言:Java
Java语言语法和C语言和C++语言很接近,很容易学习和使用,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的特性,Java语言不使用指针,而是引用,并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧
20 2
|
28天前
|
Java 数据处理 开发者
【Java基础面试十二】、说一说你对面向对象的理解
这篇文章阐述了面向对象是一种以类和对象为基础,通过封装、继承和多态等概念来模拟现实世界中的事物及其相互关系的程序设计方法,它强调以事物为中心进行思考和系统构造,与结构化程序设计相比,更符合人类的自然思维方式。
【Java基础面试十二】、说一说你对面向对象的理解
|
28天前
|
Java
【Java基础面试十三】、面向对象的三大特征是什么?
这篇文章介绍了面向对象程序设计的三大基本特征:封装、继承和多态,其中封装隐藏对象实现细节,继承实现软件复用,多态允许子类对象表现出不同的行为特征。
【Java基础面试十三】、面向对象的三大特征是什么?
|
24天前
|
Java 开发者 C++
|
27天前
|
存储 Java
Java面向对象面试题总结(上)
在Java中,重写(Override)与重载(Overload)是两个重要的概念,关联到方法的定义与调用。重写是指子类对继承自父类的方法进行新的实现,以便提供子类特有的行为,其关键在于方法签名一致但方法体不同。重载则允许在同一个类中定义多个同名方法,只要参数列表不同即可,以此提供方法调用的灵活性。重写关注多态性,而重载强调编译时多态。
19 1
|
1月前
|
Java 数据安全/隐私保护
09 Java面向对象三大特征(概述)
09 Java面向对象三大特征(概述)
51 4
|
1月前
|
存储 Java 程序员
08 Java面向对象基础(对象与类+实例变量与方法+构造方法+this关键字)
08 Java面向对象基础(对象与类+实例变量与方法+构造方法+this关键字)
59 4
|
17天前
|
存储 Java 数据库连接
Java编程之旅:从基础到高级,探索面向对象的力量
【8月更文挑战第31天】本文是一篇深入浅出的Java编程指南,旨在通过生动的例子和实际代码演示,带领读者从Java的基础语法起步,逐步深入到面向对象的核心概念,最后探讨如何在实际项目中应用这些知识。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的见解和实用的技巧。
|
27天前
|
Java 数据安全/隐私保护
【Java 第五篇章】面向对象
封装隐藏对象内部细节,仅暴露出必要的接口,提升代码的安全性和可维护性。通过private修饰属性并提供公有的getter和setter方法实现。权限修饰符从private到public控制着访问范围,从类内到整个项目。封装可用于类及其内部结构。
13 0