1. 面向对象的概念
  2. 类与对象的关系
  3. 封装

面向对象

  • 面向过程: 强调的是过程(动作)

  • 面向对象: 强调的是对象(实体)

面向对象的特点

  1. 面向对象就是一种常见的思想,符合人们的思考习惯;
  2. 面向对象的出现,将复杂的问题简单化;
  3. 面向对象的出现,让曾经在问题中的执行者,变成了对象中的指挥者.

面向对象的三个特征: 封装 继承 多态

类与对象的关系

  • 类: 对事物的描述

  • 对象: 该类事物的实例, 在 java 中通过 new 创建. 实际上, 对象的出现是为了封装一个事物所具备的数据.

  • 怎么描述事物呢?

    对于事物的描述通常只关注两方面:

    属性(通常是数值)

    行为(通常是动作,即函数)

  • 如何定义类?

    定义类其实就是在定义类中的成员,而成员包括:

    成员变量(即属性)

    成员函数(即行为)

//例: 描述小汽车
/*
分析:
1. 属性
轮胎数
颜色
2. 行为
运行
*/
// 类
class Car
{
int num; //轮胎数
String color; //颜色
void run() // 行为
{
System.out.println(num+"..."+color);
}
} class CarDemo
{
public static void main(String[] args)
{
// 在计算机中创建一个 car 的实例, 通过 new 关键字
Car c = new Car(); // c 就是一个 类 类型的引用变量, 指向了该类的对象(实例)
// 类 类型的变量要么指向对象, 要么就是 null.
c.num = 4;
c.color = "red";
c.run(); // 要使用对象中的内容可以通过 对象.成员 的形式来完成.
}
}

对象的内存体现

成员变量和局部变量的区别:

  1. 成员变量定义在类中,整个类中都可以访问;

    局部变量定义在函数, 语句, 局部代码块中, 只在所属的区域有效.

  2. 成员变量存在于堆内存的对象中;

    局部变量存在于栈内存的方法中.

  3. 成员变量随着对象的创建而存在, 随着对象的消失而消失;

    局部变量随着所属区域的执行而存在, 随着所属区域的结束而释放.

  4. 成员变量都有默认初始化值;

    局部变量没有默认初始化值.

匿名对象

  • 定义: 没有名字的对象, 其实就是定义对象的简写格式.
  • 格式: new Car();
  • 使用方式:
    • 当对象对方法仅进行一次调用的时候, 就可以简化成匿名对象.
    • 匿名对象可以作为实际参数进行传递.

基本数据类型数据参数传递图解

引用数据类型参数传递图解

封装 (Encapsulation)

// 定义类
class Person
{
int age;
void speak()
{
System.out.println("age="+age);
}
} class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person();
p.age = 20; //直接访问该属性,存在安全隐患. 例如 p.age = -20; 不符合实际情况,属于错误的赋值
p.speak();
}
} // 改进方法
class Person
{
private int age; // 使用关键字 private, 私有化该属性,只在本类中有效, 即使创建对象, 也访问不到. public void setAge(int a) // 设置值
{
if(a>0 && a<130) // 可以在此处对赋值数据进行判断
age = a;
else
System.out.println("错误的数据");
} 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.setAge = 20; // 设置值的方式
p.speak();
}
}
  • 定义: 是指隐藏对象的属性和实现细节, 仅对外提供公共访问方式.

  • 好处:

    • 隔离变化
    • 便于使用
    • 提高复用性
    • 提高安全性
  • 封装原则:

    • 把不需要对外提供的内容都隐藏起来
    • 把属性都隐藏, 提供公共方法对属性访问.

      备注: 对外提供方法的目的,是可以对属性可控. set 方法返回值类型 void, get 方法返回值类型和属性类型相同.
  • 关键字: private 是一个权限修饰符, 用于修饰类中的成员.

    **备注: **

    1. 私有的内容只在本类中有效, 即使创建对象, 也访问不到.
    2. 私有仅仅是封装的一种体现而已, java 最小的封装体是 函数. 另外, 类和框架也都是封装体.

_参考资料:_
- [JavaSE 基础视频(毕向东)](https://www.bilibili.com/video/av3091992/index_4.html#page=5)

Java 面向对象编程介绍的更多相关文章

  1. JAVA面向对象编程课程设计——网络版单机斗地主

    一.团队介绍 成员姓名 任务分配 成员课程设计博客链接 兰泽祥(组长) 数据库,斗地主规则的实现,人机自动出牌的算法,实体类的设计 JAVA面向对象编程课程设计--web版斗地主 吴修恩 JSP界面的 ...

  2. Java面向对象编程基础

    一.Java面向对象编程基础 1.什么是对象?Object 什么都是对象! 只要是客观存在的具体事物,都是对象(汽车.小强.事件.任务.按钮.字体) 2.为什么需要面向对象? 面向对象能够像分析现实生 ...

  3. java 面向对象编程。。。。

    经过一周的学习(java),总结了许多,对java的理解,java的类型,运用,安装,基础语法,变量,常量,表达式,语句 java从C语言中继承了大量语言特性.java面向对象编程的基本特征,包括继承 ...

  4. 《Java面向对象编程》

    <Java面向对象编程> 第11章 对象的生命周期 11.1  创建对象的方式 用new语句创建对象 运用反射手段,调用java.lang.Class 或者 java.lang.Const ...

  5. JAVA面向对象编程课程设计——web版斗地主

    一.团队课程设计博客链接 JAVA面向对象编程课程设计--网络版单机斗地主 二.个人负责模块或任务说明 实体类的设计 斗地主规则的实现 人机自动出牌的算法 实现数据库的DAO模式 三.自己的代码提交记 ...

  6. java面向对象编程知识点总结

    一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ...

  7. Java面向对象编程(一)

    由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ...

  8. JAVA学习(五):Java面向对象编程基础

    Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目 ...

  9. (一)如何理解java面向对象编程

    哲学中,事物总是螺旋式上升,波浪式前进.因而编程也逐渐向人类更容易理解的方向前进,多年来人们苦苦追求的编程境界 : 高扩展性(extensibility),高复用性(reuseable).java语言 ...

随机推荐

  1. 点滴积累【other】---win2003 service pack2 IIS 无法复制CONVLOG.EXE CONVLOG.EX_(转载)

    在安装的时候出现一个错误提示“安装程序无法复制文件CONVLOG.EX_”,上网找了下资料,说是在运行-中输入”esentutl /p %windir%/security/database/seced ...

  2. nginx整合php+lua+oracle环境搭建

    nginx整合php+lua+oracle环境搭建 标签: nginxluaoraclephplinux -- : 1473人阅读 评论() 收藏 举报 分类: 技术() 版权声明:本文为博主原创文章 ...

  3. RabbitMQ学习之:(一)初识、概念及心得

    因为网上有一篇很好的RMQ的入门帖子http://lostechies.com/derekgreer/tag/rabbitmq/,所以我就不多说了,就说说我目前看了该作者1~5章后,自己的心得.(所以 ...

  4. VS2015调用Matlab2017a环境配置(转载)

    VS2015调用Matlab2017a环境配置 一定要在Debug+x64平台下进行配置,x64,x64,x64!!!* 1.配置环境变量 右键计算机—–>属性——>高级系统设置——> ...

  5. 让IE6支持min-width和max-width的方法

    正如君所想象的一样,同实现层的fixed一样,用的是expression语句.例如div#demo在: IE6下最小宽度300px:   或 *html div#demo { width:expres ...

  6. PAT007 六度空间

    “六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论.这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够 ...

  7. [ppurl]从”皮皮书屋”下载电子书的姿势

    (欢迎转载,转载请注明出处:http://blog.csdn.net/hcbbt/article/details/42072545) 写在前面的扯皮 为什么标题的"皮皮书屋"加上了 ...

  8. 【python】计算器

    from __future__ import division import sys from math import * from PyQt4.QtCore import * from PyQt4. ...

  9. hdu 4294(bfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4294 思路:题目的意思是说,给你n,k,则求出n的正整数倍数,使得这个数字在k进制下表示的时候需要的不 ...

  10. c/c++中内存对齐完全理解

    一,什么是内存对齐?内存对齐用来做什么? 所谓内存对齐,是为了让内存存取更有效率而采用的一种编译阶段优化内存存取的手段. 比如对于int x;(这里假设sizeof(int)==4),因为cpu对内存 ...