Java(类与对象、封装)
面向过程、面向对象
- 面向对象编程(Object-Oriented Programming, OOP)
- 本质:以类的方式组织代码,以对象的组织(封装)数据。
- 抽象
- 三大特性
- 封装
- 继承
- 多态
- 从认识论的角度考虑是先有对象后有类。对象是具体的事物,类是对象的抽象。
- 从代码运行角度考虑是先有类后有对象。类是对象的模板。
1.类与对象
- 例
class Person{...属性、方法....} //类 Person A=new Person(); //A 是对象
- 创建与初始化对象
- 使用new关键字创建的时候,除了分配内存之外,还会给创建好的对象进行默认的初始化,以及对类中构造器(C++中称为构造函数)的调用。
- 类中的构造器也被称为构造方法,创建对象时必须要调用。有以下特点:
- 必须和类的名字相同
- 没有返回类型,也不能写void
- 构造器(构造方法、构造函数)
public class Person {
//一个类即使什么都不写,也会存在一个默认的无参构造方法
//显示地定义构造器
String name; //作用:1. 使用new关键字,本质是在调用构造器
//2. 用来初始化对象的值
public Person(){} //无参构造 //有参构造 3.一旦定义了有参构造,无参就必须显示定义
public Person(String name){
this.name=name;
}//Alt+insert 快捷键插入构造方法
class A{
public static void main(String[] args){
Person A=new Person("小白一号");//创建一个对象 名叫A 并给A的构造器传递参数“小白一号” System.out.print(A.name); //调用并输出A的name
}
}
2.封装
- 该露的露,该藏的藏
- 我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据细节由自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。
- 封装(数据的隐藏)
- 通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,称为信息隐藏。
- 作用
- 提高程序的安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 系统可维护性增加了
class Person{
//私有 外部不可以直接以 对象.name 的方式直接使用
private String name;
private int id;
private int age //通过下面两个函数访问和修改数据
public void input(){}
public void output(){}
}
Java(类与对象、封装)的更多相关文章
- [Java初探08]__简单学习Java类和对象
前言 在前面的学习中,我们对面向对象的编程思想有了一个基本的了解,并且简单的了解了类和对象的定义.那么类和对象在Java语言中是如何表现的,这次,就从实际出发,学习一下一下类和对象在Java语言中的使 ...
- Java类和对象初始化
类的生命周期: Java类的初始化: 本阶段负责为类变量赋正确的初始值.(类变量即静态变量) Java编译器把所有的类变量初始化语句和静态初始化器通通收集到<clinit>方法中,该方法只 ...
- java类和对象之间的差
java类和对象之间的差别是一个普遍的问题,刚开始学习java当它来到与类和对象接触.今天就来总结一下它们之间的差异. 先说说class和object差异.事实上,词:object是全部class的父 ...
- 危险代码:如何使用Unsafe操作内存中的Java类和对象
危险代码:如何使用Unsafe操作内存中的Java类和对象—Part1 危险代码:如何使用Unsafe操作内存中的Java类和对象—Part2 危险代码:如何使用Unsafe操作内存中的Java类和对 ...
- java类和对象
类是对象的抽象 对象是类的一个实例类 对象 = new 类();拿对象可以操作这个类里的方法 java类与对象的区别是个老生常谈的问题,刚开始学java的时候就开始接触类和对象,今天来总结一下他们之间 ...
- JAVA类和对象课后作业
1.使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询"你已经创建了多少个对象?" 代码: //显示类 //YiMingLai 2 ...
- JAVA类与对象作业——动手动脑以及课后实验性问题
一: 1.源代码 //MAO2015.10.6 //foo class Foo { int value; public Foo(int initValue) { value = initValue; ...
- java类与对象的动手动脑和其他小问题
在Java中,我们可以通过组合一私有字段和一对get/set方法来定义一个属性.私有的变量,共有的方法. package sample; /** * 自定义Java类的示例 */ class MyCl ...
- JAVA类与对象(一)----基础概念理解
面向对象基本概念 面向对象是一种新兴的程序设计方法,或者说是一种新的程序设计规范,其基本思想是使用对象.类.继承.封装.消息等基本概念来进行程序设计.它是从现实世界客观存在的事物(即对象)出发来构造软 ...
- java类和对象的基础(笔记)
在Java类的设计中,有时希望一个类在任何时候只能有一个实例.这时可以将该类设计为单例模式(singleton).要将一个类设计为单例模式,需要把类的构造方法的访问修饰符声明为private,然后在类 ...
随机推荐
- 最大流基础(Maximum Flow Basis)
1. 最大流问题定义 1.1 流网络(Flow network) Def. A flow network is a tuple \(G = (V, E, s, t, c)\): Digraph \(( ...
- Quicker 快速开发,控制脚本关闭(示例,鼠标连点器)
前言 一般写Quicker脚本的时候,是不需要考虑中途手动退出脚本的,因为多数脚本的运行时间不长,没多少中途退出的需求.但一旦脚本需要后台不定时间运行(可能要连续运行很长时间),如果不能手动控制脚本终 ...
- VirtualBox下宿主机和Linux虚拟机共享文件配置方法
VirtualBox版本-5.2.8 Linux版本-Ubuntu16.04 2020.03.31 一.首先在宿主机上新建一个文件夹,这里命名为共享文件夹(如果读者自行命名记得后文全部替换),存放了一 ...
- STM32 HAL库学习(F407ZGT6) (1)-晶振/时钟树
时钟树(以F407为例) 对于 STM32F4 系列的芯片,正常工作的主频可以达到 168Mhz,但并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十Khz的时钟即可.同一个 ...
- LAL v0.34.3发布,G711音频来了,Web UI也来了
Go语言流媒体开源项目 LAL 今天发布了v0.34.3版本. LAL 项目地址:https://github.com/q191201771/lal 老规矩,简单介绍一下: ▦ 一. 音频G711 新 ...
- python之opencv库
关于OpenCV简介 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 C ...
- [软件设计&系统建模] Web软件通用能力模块
0 基础工具 1 日志 2 权限 3 文件处理(下载/上传) 4 对象池 对象池 数据库连接池 线程池 5 微服务 服务网关 配置中心 注册中心 服务调用 服务熔断 健康检测 Actuator 6 缓 ...
- laravel 中使用的 PDF 扩展包 laravel-dompdf 和 laravel-snappy
这两天项目中需要将HTML页面转换为PDF文件方便打印,我在网上搜了很多资料.先后尝试了laravel-dompdf和laravel-snappy两种扩展包,个人感觉laravel-snappy比较好 ...
- YII2.0的文件上传, 并把文件名称重新编译
/** *@Action 文件上传示例 *@这里我们演示的是一个YII2.0的文件上传, 并把文件名称重新编译 *@我们上传的是一个叫 photo 的jpg和png格式的文件 */ Controlle ...
- 研发运维双管齐下!Seal AppManager的正确打开方式
新一代应用统一部署管理平台 Seal AppManager 采用平台工程的理念,通过降低基础设施操作的复杂度为研发和运维团队提供易用.一致的应用管理和部署体验.Seal AppManager 帮助研发 ...