【Java】面向对象 - 封装
继承 封装 多态
重新搞一波 复习巩固
简单记录 慕课网 imooc Java 零基础入门-Java面向对象-Java封装
封装
封装是什么?
将类的某些信息隐藏在类内部,不允许外部程序直接访问
通过该类提供的方法来实现对隐藏信息的操作和访问
隐藏对象的信息
留出访问的接口
隐藏对象的信息 留出访问的接口
例:
ATM机 存取款 转账 余额查询 …
钞票 重要信息 ATM的 不能看到 不能拿走
操作接口 插卡口 取钞口 操作屏 简单操作 获取钞票
银行卡 密码 简单操作 拿到钞票 ATM设计原理
钞票安全性 对外接口 用户的 便捷操作
ATM的封装
特点:
1、只能通过规定方法访问数据
2、隐藏类的实例细节,方便修改和实现
封装
修改属性的可见性 设为private
创建getter/setter方法 设为public 用于属性的读写
在getter/setter方法中加入属性控制语句 对属性值的合法进行判断
包
作用:
1、管理Java文件
2、解决同名文件冲突
定义包
语法:
package包名;
例:package com.imooc.animal;
注意:
1、必须放在Java源文件中的第一行
2、一个Java源文件中只能有一个package语句
3、包名全部英文小写
4、命名方式:域名倒序+模块+功能
管理Java文件
解决同名文件冲突
导入包
语法:
import 包名.类名;
例:
导入包中全部类:
import com.imooc.*;
导入包中指定类:
import com.imooc.animal.Cat;
常用系统包
java.lang 包含java 语言基础的类
java.util 包含java语言中各种工具类
java.io 包含输入、输出相关功能的类
static
1、static + 属性 — 静态属性
2、static + 方法 — 静态方法
3、static + 类 — 不存在
4、static + 方法内局部变量 —不存在
静态成员随类加载产生,直至类销毁才回收
静态方法
1、可以直接调用同类中的静态成员
2、不可以直接调用同类中的非静态成员
3、可以通过实例化对象后,对象调用的方式完成非静态成员调用
实例化 可调用非静态的
直接使用 类 .静态方法
代码块
1、通过{ }可以形成代码块
2、方法内的代码块称为:普通代码块
3、类内的代码块称为:构造代码块
4、构造代码块前 + static : 静态代码块
代码块 执行顺序
1、无论实例产生多少对象,静态代码块只执行一次
2、构造代码块随实例化过程调用
3、普通代码块随方法调用执行
Cat.java
package com.imooc.animal;
/**
* 宠物猫类
*
* @author imooc
*
*/
//static+类--》不存在
public class Cat {
// 成员属性:昵称、年龄、体重、品种
// 修改属性的可见性---private 限定只能在当前类内访问
private String name;// 昵称 String类型默认值null
private int month;// 年龄 int类型默认值0
private double weight;// 体重 double类型默认值0.0
private String species;// 品种
//static: 静态 静态成员、类成员
//static+属性--》静态属性、类属性
public static int price;//售价
static{
System.out.println("我是静态代码块1");
}//静态代码块
//构造方法
public Cat() {
//static+方法内的局部变量--》不存在
// static int temp=14;
System.out.println("我是宠物猫~~");
}
public Cat(int month) {
// this.month=month;
this.setMonth(month);
}
// {
// name="妞妞";
// price=130;
// System.out.println("我是构造代码块1");
// }//构造代码块
//
static{
price=290;
Cat temp=new Cat();
temp.name="小胖";
System.out.println("我是静态代码块2");
}//静态代码块
// 创建get/set方法
// 在get/set方法中添加对属性的限定
public void setName(String name) {
this.name = name;
}
public String getName() {
return "我是一只名叫:" + this.name + "的宠物猫";
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
if (month <= 0)
System.out.println("输入信息错误,宠物猫的年龄必须大于0");
else
this.month = month;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public String getSpecies() {
return species;
}
public void setSpecies(String species) {
this.species = species;
}
// 成员方法:跑动、吃东西
// 跑动的方法
//在成员方法中,可以直接访问类中静态成员
public void run() {
eat();
this.name="妞妞";
this.price=20;
System.out.println("售价是"+Cat.price+"的"+this.name+"快跑");
}
public void run(String name) {
int temp=14;
{
// int temp=12;
System.out.println("我是普通代码块1,temp="+temp);
}//普通代码块
System.out.println(name + "快跑,temp="+temp);
{
// int temp=13;
System.out.println("我是普通代码块2,temp="+temp);
}//普通代码块
}
// 吃东西的方法
//static+方法--》类方法、静态方法
public static void eat() {
//静态方法中不能直接访问同一个类中的非静态成员,只能直接调用同一个类中的静态成员
//只能通过对象实例化后,对象.成员方法的方式访问非静态成员
Cat temp=new Cat();
temp.run();
temp.name="小胖";//静态方法中不能使用this
// temp.name="小胖";
price=1500;
System.out.println("小猫吃鱼");
}
}
CatTest.java
package com.imooc.animal;
//单一职责原则
public class CatTest {
public static void main(String[] args) {
// 对象实例化
Cat one = new Cat(3);
// 测试
// one.setName("凡凡");
// one.setMonth(0); //=-3;
// one.weight = 1200;
// one.species = "中华田园猫";
// System.out.println("昵称:" + one.getName());
if (one.getMonth() == 0)
return;
System.out.println("年龄:" + one.getMonth());
// System.out.println("体重:" + one.weight);
// System.out.println("品种:" + one.species);
}
}
总结
封装是什么?
将类的某些信息隐藏在类内部,不允许外部程序直接访问
通过该类提供的方法来实现对隐藏信息的操作和访问
隐藏对象的信息
留出访问的接口
【Java】面向对象 - 封装的更多相关文章
- Java面向对象㈠ -- 封装
Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...
- Java面向对象封装和继承
面向对象 什么是面向过程.面向对象? 面向过程与面向对象都是我们编程中,编写程序的一种思维方式. 面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程.例如:公司打扫卫生( ...
- JAVA面向对象-----封装
我们日常使用的电脑主机,把cpu.内存.主板等等都封装到机箱里面去.假如没有机箱的话的出现什么问题,主机.主板全部都散落在一处,然后开机没有开机按钮,那么需要我们直接操作接跳线才能把电脑开启.这样子的 ...
- Java面向对象----封装概念
封装 信息隐藏,隐藏对象的细节 访问修饰符 public private protected 默认 属性封装的实现 方法封装的目的(隐藏方法实现细节) package com.tanlei.newer ...
- Java面向对象封装优化2_构造方法
1. 类 package cn.itcast.day06.demo05; /* 一个标准的类通常要拥有下面四个组成部分: 1. 所有的成员变量都要使用private关键字修饰 2. 为每一个成员变量编 ...
- 学习练习 java面向对象封装汽车
package com.hanqi; //汽车 public class Car { // 车牌 private String CheP; // 油箱容量 private double YouXRL ...
- java 面向对象 — 封装
- Java面向对象封装优化1_this(Python中的self)
1. 类 package cn.itcast.day06.demo03; /* 问题描述:定义Person的年龄时,无法阻止不合理的数值被设置进来. 解决方案:用private关键字将需要保护的成员变 ...
- Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js
Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js 1.1. 封装性是面象对象编程中的三大特性之一 三个基本的特性:封装.继承与多态1 1.2. 魔 ...
- java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final
一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...
随机推荐
- 推荐系统实践 0x0f AutoRec
从这一篇开始,我们开始学习深度学习推荐模型,与传统的机器学习相比,深度学习模型的表达能力更强,并且更能够挖掘出数据中潜藏的模式.另外.深度学习模型结构也非常灵活,能够根据业务场景和数据结构进行调整.还 ...
- Kubernetes【K8S】(一):Kubernetes组件
什么是Kubernetes Kubernetes 是一个可移植的.可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化.Kubernetes拥有一个庞大且快速增长的生态系统. ...
- elasticsearch6.5.x-centos6
elasticsearch6.5.x-centos6 elasticsearch 和 关系型数据库中的类比 es ====== RDBMS index ----- database type ---- ...
- Windows单机安装hadoop
版本信息 Hadoop 3.2.0 java version "1.8.0_201" Windows 7专业版,64位 安装过程 jdk安装 下载jdk,解压到目录,D:\Java ...
- [打基础]OI/ACM基本功&一些小功能的实现&一些错误(持续更新)
基本功 前导0 如题,有时候需要把3输出成03这样子,可以调用 cout.width(x); ,x表示以几位,用 cout.fill(x); 来给出前导填充的内容,一般x以char的形式给出 例如可以 ...
- bugku 之 crypto:进制转换的python脚本
题目如下: text.txt的内容: 知识点:python怎么做进制转换 除了自己按照计算方法写一遍进制转换,可以用python自带的强制转换: int(a,num) 其中,int是转换成十进制整数类 ...
- Java基础进阶:多态与接口重点摘要,类和接口,接口特点,接口详解,多态详解,多态中的成员访问特点,多态的好处和弊端,多态的转型,多态存在的问题,附重难点,代码实现源码,课堂笔记,课后扩展及答案
多态与接口重点摘要 接口特点: 接口用interface修饰 interface 接口名{} 类实现接口用implements表示 class 类名 implements接口名{} 接口不能实例化,可 ...
- 网页客服思路以及QQ截图粘贴到聊天框功能
功能: 1.客服需登录进入客服页面.用户无需登录,进入用户页面,直接获取sessionId作为id值. 2.用户进入页面并且发送消息时,客服才会获取到该用户,并在左侧列表显示. 3.点击用户名即可切换 ...
- 前后端分离项目获取后端跨控制器获取不到session
最近做前后端分离项目(.net core web api +vue)时,后台跨控制器不能获取到session.由于配置的是共享的session.本来以为是共享session出了问题,就在共享sess ...
- sql优化的几种方式
一.为什么要对SQL进行优化 我们开发项目上线初期,由于业务数据量相对较少,一些SQL的执行效率对程序运行效率的影响不太明显,而开发和运维人员也无法判断SQL对程序的运行效率有多大,故很少针对SQL进 ...