封装:类的格式,系统中使用的类都是有封装的
一个类包含哪些内容:
面向对象的成员:
属性: 使用对象变量名调用
方法: 使用对象变量名调用
构造方法:
格式:没有返回值结构,且方法名是类名的方法 public 类名(){ }
创建对象的时候调用 new 类名();
作用: 用于对象创建时的初始化 (属性的初始化 和 方法初始化调用)
构造方法的重载: 重载方法
一个类中可以定义多个同名的方法 ,要求参数不一致
构造代码块: { } 也是在对象创建时执行 也可以做一些初始化操作
静态资源:static 与对象没关系 靠类名调用 特性: 唯一性
静态属性:在内存中只存在一份,类名直接调用
静态方法:类名直接调用 ,不能直接使用本类中对象成员部分
静态代码块:只会执行唯一的一次 在类被加载时调用执行
访问权限修饰符:
public : 修饰类 属性 方法 ,表示权限是公开 在项目中都可以调用
private :私有的 只能修饰类中的成员 权限是只能在本类中访问
protected: 只能在同一个包下 和 子类中访问
缺省不写 : 类中缺省不写 同一个包下 接口中缺省不写 默认public
面向对象三大特性之一:
实现对象的属性和方法的控制访问
访问权限修饰符: 限制代码调用的区域,包含公共的(public)和私有的(private)以及受保护的和缺省不写
public: 公共的 整个项目下都可以访问
修饰: 类 属性 方法
修饰类的时候,这个类的类名必须与所在文件名一致 ,且一个文件中只能包含一个public的类-主类
private:私有的 只能在本类中访问
修饰:属性 方法
**protected:**受保护的 只能在同包下,不同包的子类中也可以访问
修饰: 属性 方法
缺省不写: 类默认的 只能在同包下
修饰: 类 属性 方法
封:
受限制的修饰符修饰属性 方法等,使其不能被对象直接调用
为什么要限制?属性对于数据的要求 通常比数据类型要求更具体
装:
自己设计一组不受限制的方法,通过参数 返回值对于数据,别的方法进行访问操作
设置一组:set/get方法 用于对属性赋值 和 获取属性的值
构造方法:
创建对象时需要调用的方法 ,执行于对象初始化时
格式: 没有返回值结构,方法名为类名的方法
public 类名(){ }
每个类都默认有一个空参数的隐藏构造方法
一旦主动写了构造方法,隐式就会覆盖
通常我们通过构造方法的参数进行初始化操作
publicclassUser{privateStringname;// 必须6个字符以上privateStringpwd;// 必须包含字符以及数字privateStringemail;// 必须包含合法的域名和@符号privateintage;// 0-150// 构造方法publicUser(Stringname,Stringpwd,Stringemail,intage){this.name=name;this.pwd=pwd;this.email=email;this.setAge(age);}publicUser(){}publicUser(Stringname,Stringpwd){this.name=name;this.pwd=pwd;}publicintgetAge(){returnage;}publicvoidsetAge(intage1){// 将数据存入参数中,在方法中对参数进行验证后 再赋给属性if(age1<0||age1>150){System.out.println("年龄不合法~");return;}this.age=age1;}publicvoidshowInfo(){System.out.println("name:"+this.name+" pwd:"+this.pwd+" email:"+this.email+" age:"+this.age);}}classStudent{base08.v2}classTeacher{}classMain{publicstaticvoidmain(String[]args){Useruser=newUser("hello","123456","hello@hello.com",18);// user.email = "hello";// user.age=-100;user.setAge(-100);inta=user.getAge();System.out.println(a);user.showInfo();Useruser1=newUser();Useruser2=newUser("admin","123456");user2.showInfo();user1.showInfo();}}总结:
代码格式更加规范 可读性更好
数据的安全性更好
读写分离