Java Study For Five Day( 面向对象一)
面向对象
1.面向对象的概念
2.理解面向对象
*面向对象其实是相对面向过程而言的,面向对象和面向过程都是一种思想,它们所强调的内容不一样。
*面向对象:强调的是功能的行为,将功能进行了封装成了对象,强调了具备功能的对象。
*面向对象是基于面向过程的
3.类与对象的关系
人开门:利用名词提炼法
人{
开门(门){
门.开();
}
}
门{
开(){
操作门轴等
}
}
4.面向对象的三大特征:封装、继承、多态。
以后开发其实就是找对象使用,没有对象就创建一个对象来使用,就像找女朋友一样,没有就自己找个,这里没有对象就自己建一个(当然也是要找适合的)。
找对象,建立对象,使用对象,并维护对象的关系。生活中的对象:张三,王五...
想要描述:提取对象中的共性内容,对具体的抽象。
反射到Java中,描述就是关键字class定义的类,而具体的对象就是对应Java在堆内存中是使用new关键字建立的实体。
类就是对现实生活中事物的描述,而对象就是这类事物实实在在存在的个体。

5.成员变量和局部变量的区别
1.作用范围:
成员变量作用于整个类中,局部变量只在某个范围内有效。(一般指的就是方法,语句体内)
2.在内存中的位置
成员变量随着对象的创建而存在,随着对象的消失而消失,存储在堆内存中,而局部变量在方法被调用,或者语句被执行的时候存在,存储在栈内存中。
3.初始值
成员变量有默认初始值,局部变量没有默认初始值,使用前必须赋值。
6.匿名对象
匿名对象其实就是对象的简化形式
使用的两种情况:a.当对对象的方法仅进行一次的调用的时候;b.匿名对像可以作为实际参数进行传递
如果对一个对象进行多个成员调用,必须给这个对象起个名字
需求:汽车修配厂,对汽车进行改装,将来的车都改成黑车,三个轮胎。
public static void main(String[] args)
{
Car q = new Car();
show(q);
}
public static void show(Car c)
{
c.num = 3;
c.color = "black";
c.run();
}

封装
封装:是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式。
好处:将变化隔离;便于使用;提高重用性;提高安全性。
原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共的方法对其访问
关键字private:封装在代码中的体现
(1)私有的意思,权限修饰符
(2)用来修饰成员变量和成员函数
(3)用private修饰的成员只在本类中有效
(4)私有是封装的一种体现
class Person
{
private int age;
public void setAge(int a)
{
if(a>0 && a<130)
age =a;
else
System.out.println("false age");
}
public int getAge()
{
return age;
}
void speak()
{
System.out.println("age="+age);
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person();
//p.age = 20;//
p.setAge(20);
p.speak();
}
}
构造函数
特点:
1.函数名和类名相同
2.不用定义返回值类型
3.不用写return语句
作用:构造函数是用于创建对象,并对其进行初始化赋值,对象一建立就自动调用相对应的构造函数。
注意:
1.如果一个自定义类没有构造方法,系统会默认给出一个无参构造方法。
2.如果一个自定义类提供了构造方法,那么,系统将不再给出无参构造方法,这个时候,你可以不使用无参构造方法, 如果你想使用,那么,就必须手动给出无参构造方法。
建议:
一般情况下,我们的自定义类都要手动给出无参构造方法。
class Person1
{
private String name;
private int age;
Person1()
{
System.out.println("A:name="+name+",,age="+age);
cry();
}
Person1(String n)
{
name = n;
System.out.println("B:name="+name+",,age="+age);
cry();
}
Person1(String n,int a)
{
name = n;
age = a;
System.out.println("C:name="+name+",,age="+age);
cry();
}
public void cry()
{
System.out.println("cry..........");
}
}
class PersonDemo2
{
public static void main(String[]args)
{
Person1 p1 = new Person1();
Person1 p2 = new Person1("lisi");
Person1 p3 = new Person1("wangwu",10);
}
}
构造方法和成员方法的区别
A:格式区别
构造方法和类名相同,并且没有返回类型,也没有返回值。
普通成员方法可以任意起名,必须有返回类型,可以没有返回值。
B:作用区别
构造方法用于创建对象,并进行初始化值。
普通成员方法是用于完成特定功能的。
C:调用区别
构造方法是在创建对象时被调用的,一个对象建立,只调用一次相应构造函数
普通成员方法是由创建好的对象调用,可以调用多次
构造代码块:
作用:给对象初始化,对象一建立就执行,而且优先于构造函数执行
和构造函数的区别
构造代码块是给所有不同对象的共性进行统一初始化
构造函数是给对应的对象进行初始化构造代码块中定义的不同的对象共性的初始化内容。
this关键字
(1)this关键字代表本类对象的一个引用,谁调用this所在的方法,this就代表谁
(2)this的使用场景
A:用于区分同名成员变量和局部变量;
B:在定义函数时,该函数内部要用到调用该函数的对象时,因为此时对象还没建立,故this代表此对象
C:构造函数间调用
这个时候,this(参数)必须作为第一条语句存在。
Person p = new Person();在内存中做了哪些事情。
(1)将Person.class文件加载进内存中。
(2)如果p定义在主方法中,那么,就会在栈空间开辟一个变量空间p。
(3)在堆内存给对象分配空间。
(4)对对象中的成员进行默认初始化。
(5)对对象中的成员进行显示初始化。
(6)调用构造代码块对对象进行初始化。(如果没有就不执行)
(7)调用构造方法对对象进行初始化。对象初始化完毕。
(8)将对象的内存地址赋值给p变量,让p变量指向该对象。
Java Study For Five Day( 面向对象一)的更多相关文章
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验二 面向对象程序设计 实验报告
20175316 盛茂淞 2018-2019-2 <Java程序设计>实验二 面向对象程序设计 实验报告 (一)单元测试 在 IDEA中我们把产品代码放在src目录中,把测试代码放在tes ...
- 第四节:详细讲解Java中的类和面向对象思想
前言 大家好,给大家带来详细讲解Java中的类和面向对象思想的概述,希望你们喜欢 类和面向对象 在Java中怎样理解对象,创建对象和引用:什么是引用,对于基础学习的同学,要深入了解引用.示例:Stri ...
- Java第三次作业——面向对象基础(封装)
Java第三次作业--面向对象基础(封装) (一)学习总结 1.什么是面向对象的封装性,Java中是如何实现封装性的?试举例说明. 封装性 封装性是面向对象的方法所应遵循的一个重要原则,它有两个含义: ...
- 20165222《Java程序设计》——实验二 面向对象程序设计
20165222<Java程序设计>——实验二 面向对象程序设计 提交点一.JUnit测试用例 知识点:这里就是了解测试代码的应用,测试代码的书写为:@Test assertEquals( ...
- Java第五次作业--面向对象高级特性(抽象类与接口)
Java第五次作业--面向对象高级特性(抽象类与接口) (一)学习总结 1.在上周完成的思维导图基础上,补充本周的学习内容,对Java面向对象编程的知识点做一个全面的总结. 2.汽车租赁公司,出租汽车 ...
- Java第四次作业——面向对象高级特性(继承和多态)
Java第四次作业--面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能, ...
- Java第四次作业—面向对象高级特性(继承和多态)
Java第四次作业-面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能,说 ...
- Java进击C#——语法之面向对象
本章简言 上一章笔者讲到关于ADO.NET相关的知识,知道了如何去访问数据库.本章将来讲关于面向对象的思想.不管在JAVA还是在C#面向对象思想的重要性都是占了一个很大的成份.往往他就像呼吸一样子,更 ...
- java 28 - 1 设计模式 之 面向对象思想设计原则和模版设计模式概述
在之前的java 23 中,了解过设计模式的单例模式和工厂模式.在这里,介绍下设计模式 面向对象思想设计原则 在实际的开发中,我们要想更深入的了解面向对象思想,就必须熟悉前人总结过的面向对象的思想的设 ...
- Java中二维数组与面向对象
1:二维数组(理解) (1)元素是一维数组的数组. (2)格式: A:数据类型[][] 数组名 = new 数据类型[m][n]; B:数据类型[][] 数组名 = new 数据类型[m][]; C: ...
随机推荐
- vscode新建html文件并快速生成标准的html代码
1.打开vscode,点击Open Folder 2.选择目标文件夹,新建一个扩展名为.html的文件: 3.在第一行输入 !(英文状态下),按tab键,新建成功.界面如下图所示:
- ICMAN触摸滑条滚轮方案
ICMAN触摸滑条滚轮调光是一种利用触摸技术实现的调光控制方式,是一种更简单.直观且节能的调光方式,有效改善了用户的照明体验,并在智能家居和节能照明领域发挥着重要作用. 基于厦门晶尊微电子(ICMAN ...
- 受 LabelImg 启发的基于 web 的图像标注工具,基于 Vue 框架
受 LabelImg 启发的基于 web 的图像标注工具,基于 Vue 框架 哟,网友们好,年更鸽子终于想起了他的博客园密码.如标题所述,今天给大家带来的是一个基于 vue2 的图像标注工具.至于 ...
- vue3 modifier
vue3 modifier 是什么? modifier 中文意思为修饰符. 在vue3中主要是体现在v-model上,vue3允许我们添加自定义修饰符. 比如说这样: <template> ...
- CSS & JS Effect – Styling Select
参考 YouTube – Custom select menu - CSS only 原装 select 的缺点 这是一个原装 select design 它最大的问题是没有 spacing. bor ...
- ES 去重/聚合查询
es 安装版本为 7.14.0 springboot 有默认的版本,防止冲突设置如下 <properties> <java.version>1.8</java.versi ...
- 一些rand()的测试
rand()生成的伪随机数已经足够我们实用,为了跟好的理解rand()跟seed的关系,做了一些测试! rand()函数种子默认为1,在每一次程序运行中,随机数相同,在一次运行中,可将生成数看做随机 ...
- PostgreSQL 15 新特性解读 | 墨天轮优质文章合集
5月19日,PostgreSQL 全球开发组宣布 PostgreSQL 15 的第一个 beta 版本,这一新版本在开发者体验.性能表现等方面都有提升.为了帮助大家更快速了解到PostgreSQL 1 ...
- Android复习(三)清单文件中的元素
<action> 向 Intent 过滤器添加操作. <activity> 声明 Activity 组件. <activity-alias> 声明 Activity ...
- Linux+Nginx+Php+MariaDB+Redis部署
目录 工作机制 系统环境描述 部署Nginx 安装 启动 测试并访问 部署PHP 安装 启动 配置Nginx 测试 部署MariaDB 安装 启动 配置php支持 测试 部署Redis 安装 启动 配 ...