目录
一、封装认识
1、什么是封装
封装就是将类的部分属性和方法隐藏起来,不允许外部程序直接访问,只能通过该类提供的公开的方法来访问类中定义的属性和方法。封装是面向对象的三大特征之一。
2、使用封装
示例
public class Person {
public String name;//姓名
public String sex;//性别
public String secret;//秘密
public Person(String name,String sex,String secret){
this.name=name;
this.sex=sex;
this.secret=secret;
}
}
修改属性可见性,将类中定义的所有属性全部用private修饰
public class Person {
private String name;//姓名
//private表示私有的意思
private String sex;//性别
private String secret;//秘密
public Person(String name,String sex,String secret){
this.name=name;
this.sex=sex;
this.secret=secret;
}
}
创建公开的getter/setter方法:用于读取/修改属性值
public class Person {
private String name;//姓名
//private表示私有的意思
private String sex;//性别
private String secret;//秘密
public Person(String name,String sex,String secret){
this.name=name;
this.sex=sex;
this.secret=secret;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSecret() {
return secret;
}
public void setSecret(String secret) {
this.secret = secret;
}
}
在getter/setter方法中加入控制语句:用于对属性值的合法性校验
public void setSex(String sex) {
if(sex!="男"||sex!="女")
System.out.println("不存在此性别,请重新输入");
else
this.sex = sex;
}
//可在setter/getter中加入类似的校验
3、用封装的好处
a、封装提高了代码的重用性,因为封装会提供对外访问的公开的方法,而方法可以重用。
b、封装提高了代码的可维护性,修改代码时,只需修改部分代码,但不会影响其他代码。
c、封装隐藏了类的具体实现细节,保护了代码实现逻辑。
二、认识包
1、什么是包
包是Java中的一个专用词汇,包的本质就是一个文件夹。
2、为什么要用包
因为包可以对我们的编写进行分类,可以防止命名冲突,进行访问权限控制。
3、如何创建包
语法
package 包名 ;
包的命名规范:
包名一般是由小写字母和数字组成,每个包之间用 "." 隔开,换言之,每出现一个 "." ,就是一个包。
包名一般都含有前缀,比如个人/组织通常都是org.姓名,公司通常都是com.公司名称简写或com.公司名称。
注:如果一个类中有包的定义,那么这个类的第一行有效代码一定是包的定义。
例子如下:
//这是包的定义
package com.AE.Gundam;
import java.util.Scanner;
public class RX78 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
}
}
4、如何引入包
为了使用不在同一类中的包,需要在Java中使用import关键字引入这个类。
语法
import 包名.类名 ;
为什么会引入包?
因为JVM只能识别当前包下所有的类,如果要使用当前包之外的其他包中的类,那必须告诉JVM,使用的是哪一个包中的哪一个类。
示例
//这是包的定义
package com.AE.Gundam;
//类的全限定名:包名 + "." + 类名
import java.util.Scanner;//告诉JVM,到Java.util包中找一个名为Scanner的类
public class RX78 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
}
}
注:一个类同时引用了两个来自不同包的同名类,必须通过完整类来区分。
示例
//这是包的定义
package com.AE.Gundam;
//类的全限定名:包名 + "." + 类名
import org.name.lesson.User;
import java.util.Scanner;//告诉JVM,到Java.util包中找一个名为Scanner的类
public class RX78 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
User user=new User();
/*
因为该类中引入了 org.name.lesson.User ,如果不写包名,那么默认使用的是
org.name.lesson.User 。如果需要使用其他包中的User,则必须使用类的全限定
名来进行对象的构建与赋值操作。
*/
text.com.chapter1.User user1=new text.com.chapter1.User();
}
}
5、常用包说明
java.lang包:属于Java语言开发包,该包中的类可以直接拿来使用,而不需要引入包。因此JVM会自动引入。比如我们经常使用的System、String、Math。
java.util包:属于Java提供的一些使用类及工具类,比如经常使用的Scanner。
三、认识访问修饰符
1、概念
访问修饰符就是控制访问权限的修饰符号。
2、类的访问修饰符
类的访问修饰符就只有两种:public修饰符和默认修饰符(不写修饰符就是默认)
public修饰符修饰类表示类可以公开访问,默认修饰符修饰类表示该类只能在同一个包中访问。
3、类成员访问修饰符
类成员包括了成员属性和成员方法,类成员访问修饰符换言之就是成员属性和成员方法的访问修饰符。
四、static修饰符
1、static修饰符应用范围
static修饰符只能用来修饰类中定义的成员变量、成员方法、代码块及内部类。
2、static修饰成员变量
static 修饰的成员变量称之为类变量,不会随着成员变化而变化,属于该类所有成员共享。
如果类变量是公开的,那么可以使用 类名.变量名 直接访问该类变量。
3、static修饰成员方法
static修饰成员的方法称之为类方法,属于该类所有成员共享。
如果类方法是公开的,那么可以使用 类名.方法名 直接访问该类方法。
4、static修饰代码块
static修饰的代码块称为静态代码块,在JVM第一次记载该类时执行。因此,静态代码块只能够被执行一次,通常用于一些系统设置场景。