Java 面向对象编程介绍
- 面向对象的概念
- 类与对象的关系
- 封装
面向对象
- 面向过程: 强调的是过程(动作) 
- 面向对象: 强调的是对象(实体) 
面向对象的特点
- 面向对象就是一种常见的思想,符合人们的思考习惯;
- 面向对象的出现,将复杂的问题简单化;
- 面向对象的出现,让曾经在问题中的执行者,变成了对象中的指挥者.
面向对象的三个特征: 封装 继承 多态
类与对象的关系
- 类: 对事物的描述 
- 对象: 该类事物的实例, 在 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(); // 要使用对象中的内容可以通过 对象.成员 的形式来完成.
    }
}
对象的内存体现

成员变量和局部变量的区别:
- 成员变量定义在类中,整个类中都可以访问; 
 局部变量定义在函数, 语句, 局部代码块中, 只在所属的区域有效.
- 成员变量存在于堆内存的对象中; 
 局部变量存在于栈内存的方法中.
- 成员变量随着对象的创建而存在, 随着对象的消失而消失; 
 局部变量随着所属区域的执行而存在, 随着所属区域的结束而释放.
- 成员变量都有默认初始化值; 
 局部变量没有默认初始化值.
匿名对象
- 定义: 没有名字的对象, 其实就是定义对象的简写格式.
- 格式: 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 是一个权限修饰符, 用于修饰类中的成员. 
 **备注: **- 私有的内容只在本类中有效, 即使创建对象, 也访问不到.
- 私有仅仅是封装的一种体现而已, java 最小的封装体是 函数. 另外, 类和框架也都是封装体.
 
_参考资料:_
- [JavaSE 基础视频(毕向东)](https://www.bilibili.com/video/av3091992/index_4.html#page=5)
Java 面向对象编程介绍的更多相关文章
- JAVA面向对象编程课程设计——网络版单机斗地主
		一.团队介绍 成员姓名 任务分配 成员课程设计博客链接 兰泽祥(组长) 数据库,斗地主规则的实现,人机自动出牌的算法,实体类的设计 JAVA面向对象编程课程设计--web版斗地主 吴修恩 JSP界面的 ... 
- Java面向对象编程基础
		一.Java面向对象编程基础 1.什么是对象?Object 什么都是对象! 只要是客观存在的具体事物,都是对象(汽车.小强.事件.任务.按钮.字体) 2.为什么需要面向对象? 面向对象能够像分析现实生 ... 
- java 面向对象编程。。。。
		经过一周的学习(java),总结了许多,对java的理解,java的类型,运用,安装,基础语法,变量,常量,表达式,语句 java从C语言中继承了大量语言特性.java面向对象编程的基本特征,包括继承 ... 
- 《Java面向对象编程》
		<Java面向对象编程> 第11章 对象的生命周期 11.1 创建对象的方式 用new语句创建对象 运用反射手段,调用java.lang.Class 或者 java.lang.Const ... 
- JAVA面向对象编程课程设计——web版斗地主
		一.团队课程设计博客链接 JAVA面向对象编程课程设计--网络版单机斗地主 二.个人负责模块或任务说明 实体类的设计 斗地主规则的实现 人机自动出牌的算法 实现数据库的DAO模式 三.自己的代码提交记 ... 
- java面向对象编程知识点总结
		一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ... 
- Java面向对象编程(一)
		由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ... 
- JAVA学习(五):Java面向对象编程基础
		Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目 ... 
- (一)如何理解java面向对象编程
		哲学中,事物总是螺旋式上升,波浪式前进.因而编程也逐渐向人类更容易理解的方向前进,多年来人们苦苦追求的编程境界 : 高扩展性(extensibility),高复用性(reuseable).java语言 ... 
随机推荐
- 在linux下运行jmeter
			之前在用JMeter做性能测试时基本都用自己的笔记本电脑. 考虑到网络传输和占用系统资源情况时进行了以下分析: 1 在笔记本上,开始-cmd "ping 服务器",得到传输时间.在 ... 
- linux中的系统服务--daemon
			简单的说,系统为了某些功能必须要提供一些服务 (不论是系统本身还是网络方面),这个服务就称为 service . 但是 service 的提供总是需要程序的运行吧!否则如何运行呢?所以达成这个 ser ... 
- Java Servlet/JSP容器配置 session id
			http://www.eclipse.org/jetty/documentation/current/session-management.html#setting-session-character ... 
- ManipulationStarted,ManipulationCompleted,ManipulationDelta
			一.获取某个元素相对另一元素的相对位置 1.使用TransformToVisual获取某个元素相对于另外一个元素的偏移量. 例如:要获得rect相对于LayoutRoot的偏移量,就将LayoutRo ... 
- iptables简单配置
			iptables简单配置 分类: Linux 安全2010-10-20 16:56 4241人阅读 评论(0) 收藏 举报 input防火墙tcpfilterubuntuservice # iptab ... 
- JavaScript学习日志(2)
			javascript数据类型: 字符串string.数字number.未定义Undefined.空Null.布尔Boolean.数组Array.对象Object.javascript对象: 对象由花括 ... 
- FormatUtil类型格式转换
			package cn.edu.hbcf.common.utils; import java.math.BigDecimal; import java.math.BigInteger; import j ... 
- apache ab测试
			网站并发测试,网站服务使用的是apache2.4 因此使用ab来测试网站性能. windows使用cms 打开apache/bin 运行ab.exe (......../apache/bin/ab), ... 
- Android开发基本入门,对于事件、适配器的理解不够深入
			能到处抄点代码搞出东西来了,但对事件.对ListView这类的控件,数据解析后的视图绑定,还没有完全搞清原理. 真是年纪越大,学习能力越差了. 
- oracle tuning 工具
			工欲善其事, 必先利其器. oracle 调优方面有很多工具, 目前 UI 个人只打算使用 Toad. 重要文件 一. alert log file. (位置 parameter BACKGROUND ... 
