类和对象
成员变量,成员函数
特殊的成员变量和成员函数
函数重载
构造函数
静态变量
静态函数
面向对象:封装 继承 多态
封装 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之类的封装的更多相关文章

  1. Java数据库连接池封装与用法

    Java数据库连接池封装与用法 修改于抄袭版本,那货写的有点BUG,两个类,一个用法 ConnectionPool类: package com.vl.sql; import java.sql.Conn ...

  2. Java—继承、封装、抽象、多态

    类.对象和包 1) 面向对象编程(Object Oriented Programming ,简称 OOP):20世纪70年代以后开始流行. 2) 结构化编程与面向对象编程的区别: A. 在结构化编程中 ...

  3. Java中的封装

    在前面的一些日子里,一只都在学习C#语言,使用C#在做一些小项目的,今天转到了Java的学习,还是感觉有点的不习惯,没有以前的中文界面的,全是英文.写起代码来都一直保持着C#中的编码的习惯,但是学习J ...

  4. Java面向对象(封装性概论)

     Java面向对象(封装性概论) 知识概要:                   (1)面向对象概念 (2)类与对象的关系 (3)封装 (4)构造函数 (5)this关键字 (6)static关键 ...

  5. java Map常用方法封装

      java Map常用方法封装 CreationTime--2018年7月16日15点59分 Author:Marydon 1.准备工作 import java.util.HashMap; impo ...

  6. 【java下午茶系列】java三重奏之封装

      java中的封装.继承.多态可谓是踏入这一行业的必经之槛,诸多新人在不明就里的情况下将其各种概念背的是滚瓜烂熟.即便是工作多年之后,也不见得能说出个所以然,或许冥冥之中已经写过无数封装的代码,只是 ...

  7. Java基础之封装

    封装(Encapsulation)是java面向对象的三大特性,之前学java迷迷糊糊,一直也没弄清楚什么是封装以及为什么要封装,直到这次看书才有一种被点醒的感觉. java中的封装是针对某个类而言的 ...

  8. 【SpringBoot】 Java中如何封装Http请求,以及JSON多层嵌套解析

    前言 本文中的内容其实严格来说不算springboot里面的特性,属于JAVA基础,只是我在项目中遇到了,特归纳总结一下. HTTP请求封装 目前JAVA对于HTTP封装主要有三种方式: 1. JAV ...

  9. 简谈Java语言的封装

    简谈Java语言的封装 封装的定义 封装将复杂模块或系统的逻辑实现细节隐藏,让使用者只需要关心这个模块或系统怎么使用,而不用关心这个模块或系统是怎么实现的. 在面向对象的的编程中,我们一般通过接口来描 ...

  10. Java面向对象之封装

     面向对象的三个特征:封装.继承和多态. Java开发的过程就是找合适的库对象使用,没有对象创建新对象.找对象,建立对象,使用对象并维护对象之间的关系. 类就是对现实生活中事物的描述,而对象就是这类事 ...

随机推荐

  1. (转)OpenStack Kilo 版本中 Neutron 的新变化

    OpenStack Kilo 版本,OpenStack 这个开源项目的第11个版本,已经于2015年4月正式发布了.现在是个合适的时间来看看这个版本中Neutron到底发生了哪些变化了,以及引入了哪些 ...

  2. oracle创建存储过程中遇到的问题

    create or replace PROCEDURE CLEAR AS tname varchar(200);BEGIN tname:='''immediate trace name flush_c ...

  3. Android sqlite 使用框架

    Android数据库存储 前言: 今天无聊就试试水,写写博客,在之前andorid使用数据储存好像大概有5种方式,其中轻量级的是sqlite数据库,但是sqlite使用起来好像有麻烦,首先要判断…之后 ...

  4. php/oracle: 解析oracle表中的NCLOB,CLOB字段里面的内容

    php/oracle: 解析oracle表中的NCLOB,CLOB字段里面的内容 假如你的字段名是:passenger_info 字段类型是:NCLOB/CLOB,在读表的时候,需要将 passeng ...

  5. sql print

    这个因为你使用了varchar+int ,但是print只支持一种类型的输出,你要么通过转换函数将@no转换成字符类型,要么去掉@name.print '李勇' + convert(varchar, ...

  6. Windows 10 SDK 10.0.10069 : The installer failed. User cancelled installation. Error code: -2147023294

    注* 请先跳到文章后面的配置“操作系统的区域设置”部分,然后尝试重试安装VS,如果仍然失败,请看下面内容. 安装UAP SDK失败 Visual Studio 2015 RC Community 安装 ...

  7. Linux 性能监控分析

    好文,参考 http://blog.csdn.net/hexieshangwang/article/details/47187185

  8. linux 日常使用命令

    ●安装和登录命令:login.shutdown.halt.reboot.mount.umount.chsh ●文件处理命令:file.mkdir.grep.dd.find.mv.ls.diff.cat ...

  9. explicit修饰构造函数

    问题描述:对于单参数的构造函数C++允许隐含的类型转换,容易破坏代码可读性,并导致难以发现的错误,通过关键字explicit修饰构造函数可以禁止单参数构造函数创建隐式临时变量.

  10. hdu4442 Physical Examination(贪心)

    这种样式的最优解问题一看就是贪心.如果一下不好看,那么可以按照由特殊到一般的思维方式,先看n==2时怎么选顺序(这种由特殊到一般的思维方式是思考很多问题的入口): 有两个队时,若先选第一个,则ans= ...