Java面向对象(一)----初次见面
面向对象
面向过程:根据业务逻辑从上到下写代码
函数式编程:对一些功能的代码封装到函数中,日后无需重复编写,直接调用函数就可以了
面向对象:将所有的功能进行封装,面对的事封装了功能的实体(对象),即面向对象。
面向对象基于面向过程,只是把过程进行了对象的封装。
只要找到了对象,就可以使用对象中的功能。
通俗点讲,你去饭店去吃水煮肉,你不需要会做水煮肉,只需要告诉大厨你要吃水煮肉,他会做就可以了,你直接指挥他给你做就可以了,这就是面向对象。
所以,以后开发,先找对象以及对象的功能。如果没有,自己创建对象并将所需的功能定义到该对象中。
面向对象的好处:
1.面向对象是一种更符合人们思考习惯的思想
2.面向过程中更多的体现的是执行者,面向对象中更多的体现的是指挥者。
3.面向对象将复杂的问题简单化了。
佛曰:世间万物皆为对象。
面向对象如何应用到需求中呢?
在需求中尽量地去寻找对象。(从问题领域抽取对象)
最简单的思考访问:一般情况,名词表示的大多是对象。
比如:
需求:将大象装进冰箱里。
对象就是:大象,冰箱
一副图简单介绍类和对象的关系

可以理解为:
类就是图纸
汽车就是堆内存中的对象
类的定义
生活中描述事物无非就是描述事物的属性和行为
比如:人有身高体重的属性,有吃饭,睡觉等行为。
描述人可以这样描述:
事物的属性:
身高;
体重;
事物的行为(功能):
吃饭;
睡觉
简单理解:属性就是数值,其实就是变量;行为就是功能,就是函数。
java中用类class描述事物也是如此。
属性:对应类中的成员变量
行为:对应类中的成员函数
定义类其实是在定义类中的成员变量和成员函数
类与对象的关系:
类:对事物的描述。需要体现属性和行为。
对象:该类食物创建的实例(实体),通过该对象调用具有的属性和行为。
成员变量和局部变量的区别?
成员变量
成员变量定义在类中,在整个类中都可以被访问
成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
成员变量有默认的初始化值。
局部变量
- 局部变量之定义在局部范围内,如:函数内,语句内等
- 局部变量存在于栈内存中
- 作用的范围结束,变量空间会自动释放
- 局部变量没有默认初始化值
class Person{
//定义属性
int height;//身高
int weight;//体重
//定义方法
public void eat(){
System.out.println("eatting..."); //吃饭
}
public void Zzzz(){
System.out.println("Zzzzzz..."); //睡觉
}
}
欢喜冤家public和private(私有)
private关键字
- 是一个权限修饰符
- 用于修饰成员(成员变量和成员函数)
- 被私有化的成员只在本类中有效
常用的方法:
- 将成员变量私有化,对外提供对应的set、get方法对其进行访问。提高对数据访问的安全性。
先来看public和private的区别
class PersonDemo1{
public static void main(String[] args){
Person p = new Person();
System.out.println(p.weight);
System.out.println(p.height);
}
}
class Person{
private int height;
public int weight = 60;
public void eat(){
System.out.println("eatting...");
}
public void Zzzz(){
System.out.println("Zzzzzz...");
}
}
如果只输出体重的话,是可以输出的,因为体重是public修饰的,意思是都可以访问。
而身高,被private修饰之后,就成了私有变量,外部就不能访问,编译之后报错:
PersonDemo1.java:5: 错误: height 在 Person 中是 private 访问控制
System.out.println(p.height);
有些属性(变量)不想被外界更改,或者不想被外界调用,可以使用private。
那如果想被使用呢,那么就对外提供对应的set、get方法对其进行访问。提高对数据访问的安全性。
class PersonDemo1{
public static void main(String[] args){
Person p = new Person();
p.setHeight(175); //通过set方法对私有变量进行操作
System.out.println(p.weight);
System.out.println(p.getHeight()); //调用方法记得加()
}
}
class Person{
private int height;
public int weight = 60;
public void eat(){
System.out.println("eatting...");
}
public void Zzzz(){
System.out.println("Zzzzzz...");
}
//设置外部访问的接口,写接口
public void setHeight(int h){
height = h;
}
//设置外部访问的接口,读接口
public int getHeight(){
return height;
}
}
这就是面向对象三个特性之一——封装
Java面向对象(一)----初次见面的更多相关文章
- JAVA面向对象
JAVA面向对象 对象 我们生活中能看到能摸到的一切事物都是对象.在程序中模拟出生活中的所有东西万物皆对象 只要是对象--属性和行为(方法) 属性 对象有什么 例如:学生有姓名.学 ...
- 理解JAVA - 面向对象(object) - 属性,方法
理解JAVA - 面向对象(object) - 属性,方法 多态的体现: 向上造型,父类接收子类对象:向上造型: 从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...
- Java面向对象㈠ -- 封装
Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...
- 谈谈Java面向对象的三大特性
Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...
- Java面向对象:接口
Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...
- 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final
一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...
- 20145212《Java程序设计》实验报告二 《 Java面向对象程序设计》
20145212 实验二< Java面向对象程序设计> 实验内容 单元测试 三种代码 伪代码 百分制转五分制: 如果成绩小于60,转成"不及格" 如果成绩在60与70之 ...
- 20145213《Java程序设计》实验二Java面向对象程序设计实验报告
20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...
- 20145206《Java程序设计》实验二Java面向对象程序设计实验报告
20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
随机推荐
- Autofac的基本使用---2、普通类型
Autofac的基本使用---目录 准备 使用的表是Student,创建相关的IDAL.DAL.IBLL.BLL层. 使用EF,创建一个Model层,存放edmx文件. 控制台程序的使用 using ...
- [leetcode]24. Swap Nodes in Pairs交换链表的节点
感觉这个题后台的运行程序有问题,一开始自己想的是反转链表那道题的方法,只是隔一个节点执行一次,但是没有通过,TLE了,但是很奇怪,并没有死循环,就是最后返回的时候超时. 最后的思路就是很简单的进行交换 ...
- C# 使用 log4net 日志组件
一. 什么是 log4net Apache log4net 库是帮助程序员将日志语句输出到各种输出目标的工具,它是从Java中的Log4j迁移过来的一个.Net版的开源日志框架.log4net 的一 ...
- java零基础之---eclipse的使用
想写一篇关于初学者如何使用工具的博客,作为初学者使用IDE的第一个工具,深受大家喜欢,先写一篇eclipse的,然后再逐步推出idea, vscode 等 1. eclipse的下载及安装 1)百度搜 ...
- Java源码系列4——HashMap扩容时究竟对链表和红黑树做了什么?
我们知道 HashMap 的底层是由数组,链表,红黑树组成的,在 HashMap 做扩容操作时,除了把数组容量扩大为原来的两倍外,还会对所有元素重新计算 hash 值,因为长度扩大以后,hash值也随 ...
- DML、DDL、DCL
总体解释:DML(data manipulation language): 它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据 ...
- Sublime Text 3 习惯插件 转
原帖:https://www.cnblogs.com/hykun/p/sublimeText3.html Emmet插件 Emmet插件可以说是使用Sublime Text进行前端开发必不可少的插件 ...
- filleSystemBasises
基本查询命令 pwd 查看当前目录 dir 显示当前目录下的文件信息 more 查看文本文件的具体内容 cd 修改用户当前目录 mkdir 创建新的目录 rmdir 删除目录 copy filenam ...
- ArrayDeque API 与算法分析
ArrayDeque 是双端队列的动态数组实现,可以当作栈和队列来使用.作为栈时,它的效率比 Stack 更高,作为队列时,效率比 LinkedList 更高.ArrayDeque 大部分操作的时间复 ...
- 【Dart】语言概述
// 导入(import) // 导入核心库 //导入外部库 import 'package:test_api/test_api.dart'; // 导入文件 //import 'path/test. ...