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开发的过程就是找合适的库对象使用,没有对象创建新对象.找对象,建立对象,使用对象并维护对象之间的关系. 类就是对现实生活中事物的描述,而对象就是这类事 ...
随机推荐
- node express框架基本配置
node express框架基本配置 初始化项目 express -e 安装依赖包 npm install 安装第三方包 npm install xxx --save-dev dos 运行node a ...
- js字符串和数组的相互转化
一.数组转字符串 需要将数组元素用某个字符连接成字符串,示例代码如下: var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); 二 ...
- python中的单引号双引号和三引号
python的单引号和双引号没有本质的区别,而三引号有两种作用:注释和换行 一. 单引号中可以包含双引号,双引号中可以包含单引号 print("好好学习,'天天向上'") 结果: ...
- 解决:Elipse配置Jython Interpreters时报错Error: Python stdlib source files not found
今天学习lynnLi的博客monkeyrunner之eclipse中运行monkeyrunner脚本之环境搭建(四)时,遇到了一个问题,即: lynnLi给出的解决办法是:将Python下的Lib拷贝 ...
- Ceph的现状
转自:https://www.ustack.com/blog/ceph-distributed-block-storage/ 1. Ceph简介 Ceph是统一分布式存储系统,具有优异的性能.可靠性. ...
- 从virustotal上下载病毒样本
#!/usr/bin/env python import os import csv #import Queue import zipfile import requests import argpa ...
- 【.Net 】Json和Xml解析
引言 Json和Xml是现在跨平台传输数据的主流格式,关于它们的解析,网上资料很多,我稍作整理,写成一个小demo,方便日后使用. JSON解析 能进行json解析的类库有很多,例如Ja ...
- 20180907_网络差_天安微信token请求超时
一.异常现象 token请求时,显示请求超时. 二.原因分析 这个异常有如下几个原因: (1)服务器没有开通 qyapi.weixin.qq.com 的外网权限 (2)服务器网络太慢 三.异常解决 ...
- hive 遇到的问题及解决方法
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.ipc.StandbyException): Operation category RE ...
- MySql 创建函数 Error Code : 1418
查看日志信息:show variables like 'log_%';显示'log_bin'.'log_bin_trust_function_creators'等状态 解决方法: 关闭binary l ...