java之类的封装
类和对象
成员变量,成员函数
特殊的成员变量和成员函数
函数重载
构造函数
静态变量
静态函数
面向对象:封装 继承 多态
封装 Encapsulation
为什么需要封装?
外界无法直接操作对象的具体的属性(安全性)
核心思想:将安全性要求较高的成员变量定义为私有的,对他们的操作通过成员函数来进行,对其操作的条件在成员函数中定义
---管理类的方法:包(package)
(1)可以将类放到包里面,
在类的文件头上注明包的路径。
package 包名;
Customer类放到bank包中
可以大包里面含有小包,定义包时用.隔开
ATM类放到bank包中的sys包中
package bank.sys;
编程规范:Java中,包的名字所有字母小写
将类用包进行管理时,类一般有两种访问方式:默认方式,public方式
class Customer{} 默认方式
public class Customer{} public方式
后者叫做public类,public类对包内包外的所有类可见
public类类名必须和文件名相同
默认类,只能对同一个包内的其他类可见
一般使用public类
(2)使用其他包里面的类
导入其他包中的类
import 类的路径;
import bank.Customer; 导入bank包中的Customer类
import bank.*; 导入bank包中的所有类,不包括子包中的类
封装:
类级封装(包)
public类;默认类
成员级封装
成员的访问控制符
private
默认
protected
public
/*成员的访问控制符private,默认,protected,public
*private 成员,仅仅在类内可见
*默认权限,private可见性+对包内其他类可见
*protected成员,默认权限+对包外子类可见
*public成员,对包内包外所有类可见
*注意:真实项目中,成员变量一般私有,成员函数一般
*public,被继承使用的成员一般protected
*一般通过成员函数来访问成员变量
*/
可通过定义setter、getter函数来访问私有的成员变量
class Manager{
Manager(){ System.out.println("Manager"); }
}
public class ATM{
static Manager m;
ATM(){
m = new Manager();
System.out.println("ATM");
}
public static void main (String[] args) {
//Customer cus = new Customer();
new ATM(); new ATM(); new ATM();
}
}
package bank;
public class Customer{
String account;
private double balance = 0;
Customer(){}
}
package bank.sys;
import bank.Customer;//导入
public class ATM{
public static void main (String[] args) {
Customer cus = new Customer();
}
}
package bank;
class Customer{
String account; //默认访问权限
protected String cname; //protected访问权限
private double balance; //private访问权限
public void quKuan(){} //public访问权限
public void cunKuan(){}
}
/*成员的访问控制符private,默认,protected,public
*private 成员,仅仅在类内可见
*默认权限,private可见性+对包内其他类可见
*protected成员,默认权限+对包外子类可见
*public成员,对包内包外所有类可见
*注意:真实项目中,成员变量一般私有,成员函数一般
*public,被继承使用的成员一般protected
*一般通过成员函数来访问成员变量
*/
package school;
public class Student{
private String stuId;
private String sname;
private int age;
//写setter和getter函数?
public void setSname(String sname){
this.sname=sname;
}
public String getSname(){ return this.sname; }
public int getAge() { return this.age; }
public void setAge(int age){ this.age = age;}
public void setStuId(String stuId){ this.stuId=stuid;}
public String getStuId(){ return this.stuId; } }
class Main{
public static void main (String[] args) {
Student s = new Student();
s.setSname("张三");
System.out.println(s.getSname());
}
}
package bank.sys;
import bank.Customer;//导入
public class ATM{
public static void main (String[] args) {
Customer cus = new Customer();
}
}
package bank;
class Customer{
String account;
private double balance = 0;
public void quKuan(double mon){
if(balance<mon){
System.out.println("钱不够取");
return;
}
balance -= mon;
System.out.println("取钱成功");
}
}
class Customer{
String account;
private double balance = 0;
public void quKuan(double mon){
if(balance<mon){
System.out.println("钱不够取");
return;
}
balance -= mon;
System.out.println("取钱成功");
}
}
class ATM{
public static void main (String[] args) {
Customer cus = new Customer();
cus.quKuan(100);
cus.balance = -5000;
}
}
java之类的封装的更多相关文章
- Java数据库连接池封装与用法
Java数据库连接池封装与用法 修改于抄袭版本,那货写的有点BUG,两个类,一个用法 ConnectionPool类: package com.vl.sql; import java.sql.Conn ...
- Java—继承、封装、抽象、多态
类.对象和包 1) 面向对象编程(Object Oriented Programming ,简称 OOP):20世纪70年代以后开始流行. 2) 结构化编程与面向对象编程的区别: A. 在结构化编程中 ...
- Java中的封装
在前面的一些日子里,一只都在学习C#语言,使用C#在做一些小项目的,今天转到了Java的学习,还是感觉有点的不习惯,没有以前的中文界面的,全是英文.写起代码来都一直保持着C#中的编码的习惯,但是学习J ...
- Java面向对象(封装性概论)
Java面向对象(封装性概论) 知识概要: (1)面向对象概念 (2)类与对象的关系 (3)封装 (4)构造函数 (5)this关键字 (6)static关键 ...
- java Map常用方法封装
java Map常用方法封装 CreationTime--2018年7月16日15点59分 Author:Marydon 1.准备工作 import java.util.HashMap; impo ...
- 【java下午茶系列】java三重奏之封装
java中的封装.继承.多态可谓是踏入这一行业的必经之槛,诸多新人在不明就里的情况下将其各种概念背的是滚瓜烂熟.即便是工作多年之后,也不见得能说出个所以然,或许冥冥之中已经写过无数封装的代码,只是 ...
- Java基础之封装
封装(Encapsulation)是java面向对象的三大特性,之前学java迷迷糊糊,一直也没弄清楚什么是封装以及为什么要封装,直到这次看书才有一种被点醒的感觉. java中的封装是针对某个类而言的 ...
- 【SpringBoot】 Java中如何封装Http请求,以及JSON多层嵌套解析
前言 本文中的内容其实严格来说不算springboot里面的特性,属于JAVA基础,只是我在项目中遇到了,特归纳总结一下. HTTP请求封装 目前JAVA对于HTTP封装主要有三种方式: 1. JAV ...
- 简谈Java语言的封装
简谈Java语言的封装 封装的定义 封装将复杂模块或系统的逻辑实现细节隐藏,让使用者只需要关心这个模块或系统怎么使用,而不用关心这个模块或系统是怎么实现的. 在面向对象的的编程中,我们一般通过接口来描 ...
- Java面向对象之封装
面向对象的三个特征:封装.继承和多态. Java开发的过程就是找合适的库对象使用,没有对象创建新对象.找对象,建立对象,使用对象并维护对象之间的关系. 类就是对现实生活中事物的描述,而对象就是这类事 ...
随机推荐
- Overlay网络与物理网络的关系
编者按:无论是云计算还是SDN都把注意力集中在数据中心网络的建设上,各种解决方案层出不穷,其中以VMware为代表的软件厂商提出Overlay网络方案后,为数据中心网络的发展提出了新的思路.那么Ove ...
- mybatis中>=和<=的实现方式
原因 mybatis使用的是xml格式的文件.使用>和<号的时候,会存在与xml的标签的规范冲突. 解决方案 >=使用 <![CDATA[>=]]> >< ...
- requests 简单应用
http://docs.python-requests.org/zh_CN/latest/user/quickstart.html ,官方文档.自己有空看看顺便敲两下熟悉一下. 还有别把文件放的太深 ...
- ie-9 以下ajax无法跨域的问题。只要add:jQuery.support.cors=true;即可
if (!jQuery.support.cors && window.XDomainRequest) { var httpRegEx = /^https?:\/\//i; var ge ...
- 分布式事务_01_2PC框架raincat快速体验
一.前言 关于2PC的理论知识请见:分布式_理论_03_2PC 这一节我们来看下github上一个优秀的2PC分布式事务开源框架的快速体验. 二.源码 源码请见: https://github.com ...
- db2生成连续日期
//生成时间段内连续日期 select * from ( select date('2008-01-01') + (row_NUMBER() over () -1) days AS datennn f ...
- 马拉车——模版+KMP——模版
void Manacher(){ ;t[i];++i,len+=){ s[i<<]='#'; |]=t[i]-'A'+'a'; |]=t[i]; } s[len++]='#'; ,pos= ...
- Leetcode 904. Fruit Into Baskets
sliding window(滑动窗口)算法 class Solution(object): def totalFruit(self, tree): """ :type ...
- Arc066_F Contest with Drinks Hard
传送门 题目大意 有一个长为$N$的序列$A$,你要构造一个长为$N$的$01$序列使得$01$序列全部由$1$组成的子串个数$-$两个序列的对应位置两两乘积之和最大,每次独立的询问给定$pos,x$ ...
- 还是畅通工程(peime算法最小生成树)
个人心得:就是最小生成树的运用,还是要理解好每次都是从已搭建好的生成树里面选择与她的补集中最短距离,所以那个book数组的更新 需要好生体会.不过还是有缺陷,算法的复杂度为O(n^2),看介绍说用优先 ...