目录
-
面向对象的封装类
-
封装之后,对于那个事务来说,看不到事物比较复杂的那一面,只能看到该事物简单的一面。复杂性封装,对外提供简单的操作入门。照相机就是一个很好的封装案例,照相机的实现原理非常复杂,但是对于使用者来说,操作起来是非常方便非常便捷的,还有电视机也是封装的,电视机内存实现非常复杂,但对于使用者来说不需要关心内部的实现原理,只需要会操作遥控器就行
-
封装之后才会形成真正的“对象",真正的”独立体“
-
封装就意味着以后的程序可以重复使用,并且这个事物应该适应比较强,在任何场合都可以使用
-
封装之后,对于事物本身,提高了安全性【安全级别高】
-
封装步骤:
所有属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问
对外提供简单的操作入口,也就是说以后外部程序想访问get属性,必须通过这些简单的入口访问:——对外提供两个公开的方法,分别是set方法(修改属性)和get方法(读取属性)
-
set方法命名规范:
public void set+属性名首字母大写(一个参数){ xx=一个参数; }
-
get方法命名规范:
public int get+属性名首字母大写(无参)){ return xx; }
-
setter方法和getter方法没有static关键字;
-
有static关键字修饰的方法的调用:类名.方法名(实参);
-
没有static关键字修饰的方法的调用:引用.方法名(实参);
-
-
-
构造方法
-
构造方法又被称为构造函数/构造器/Constructor
-
构造方法语法结构:
[修饰符列表] 构造方法名(形式参数列表){ 构造方法体 }
-
对比普通方法语法结构:
[修饰符列表] 返回值类型 方法名(形式参数列表){ 方法体 }
-
对于构造方法来说,”返回值类型“不需要指定,并且也不能写void,只要写上void,这个方法就成为普通方法
-
构造方法名必须与类名一致
-
构造方法的作用,创建对象的同时,初始化实例变量的空间
-
构造方法的调用:new 构造方法名(实参列表)
-
构造方法没有返回值(每一个构造方法实际上执行结束之后都有返回值,但是这个“return 值“;这样的语句不需要写。构造方法结束时java程序自动返回值,并且返回值类型的构造方法所在类的类型。由于构造方法得到返回值类型就是类本身,所以返回值类型不需要写)
-
当一个类中没有定义任何构造方法的话,系统默认给该类提供一个无参数的构造方法,这个构造方法被称为缺省构造器
-
当一个类显示的将构造方法定义出来了,那么系统则不再默认为这个类提供缺省构造。建议开发中手动的为当前类提供无参数的构造方法,因为无参构造方法太常用了
-
构造方法支持重载机制。在一个类当中编写多个构造方法,多个构造方法显然已经构成方法重载机制
-
成员变量之实例变量,属于对象级别的变量,这种变量必须先有对象才能有实例变量,实例变量没有手动赋值的时候,系统默认赋值,实例变量的内存空间是在构造方法执行过程中开辟的,完成初始化的。系统在默认赋值的时候,也是在构造方法执行过程中完成赋值的
-
-
this关键字
-
没有static关键字的方法被称为“实例方法”,访问格式“引用.类名”
-
没有static关键字的变量被称为“实例变量”
-
当一个行为/动作执行的过程当中是需要对象参与的,那么这个方法一定要定义为“实例方法”,不要static关键字
-
this不能使用在带有static的方法中
-
this可以出现在实例方法中,this指当前正在执行这个动作的对象。this代表当前对象。
-
this可以省略
-
this是一个引用,是一个变量,this变量保存了内存地址指向了本身,this存储在JVM堆内存java对象内部
-
实例方法必须先创建对象,通过引用.的方式访问,实例方法的调用必须有对象存在
-
public class ThisTest{ //带有static //主方法 public static void main(String[] args){ //调用doSome方法 ThisTest.doSome(); /*ThisTest.dother(); 编译错误,因为dother()是实例方法,必须先创建对象,通过引用.的方式访问 */ ThisTest tt=new ThisTest();//创建对象 tt.dother(); //以上代码表示的含义:调用当前对象的dother()方法,但是由于main方法中没有 this,所以以下方法不能调用 //无法从静态上下文引用非静态变量this //dother(); //this.dother();无法从静态上下文引用非静态变量this tt.run(); } //带有static public static void doSome(){ System.out.println("do some!"); } public void dother(){ System.out.println("do ther!"); } //run是实例方法,调用run方法的一定是有对象的存在的 //一定是先创建了一个对象才能调用run方法的 public void run(){ //在大括号中的代码执行过程当中一定是存在“当前对象”的 //也就是说这里一定是有this的 System.out.println("run!"); //dother是一个实例方法,实例方法调用必须有对象存在 //以下代码表示的含义就是:调用当前对象的dother方法 dother();//this大部分情况下是可以省略的 //this.dother();这个是比较完整的 } } /*总结 带static的方法当中不能”直接“访问实例变量和实例方法 因为实例变量和实例方法都需要对象存在 而static的方法中是没有this的,也就是说当前对象是不存在的 自然也无法访问当前对象的实例变量和实例方法的 */
-
内部类可以直接访问外部类的成员,包括私有成员
外部类要访问内部类的成员必须要建立内部类的对象
创建 内部类对象格式:
外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
-