java之类的封装
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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之类的封装的主要内容,如果未能解决你的问题,请参考以下文章