- 面向对象的特点:
- 封装性:将对象的属性与行为看成一个整体;信息隐蔽:可以将对象的属性与行为保护起来,不让外界知道或者进行修改
- 继承性:可以继承一些已知的类,极大的减少了代码量
- 多态性:方法的重载,对象多态。
- 类
- 类与对象:汽车的设计图纸是类,具体生产出的某台汽车是对象。
- 类中的属性必须都进行封装,封装的属性必须通过setter和getter进行访问。
- 用private声明的属性或方法只能在其类的内部被调用,而不能在类的外部被调用
- 构造方法
- 构造方法的作用就是为类中的属性初始化
- 构造方法的名称必须与类名称一致
- 构造方法的声明处不能有任何返回值类型的声明,不能使用return返回值
- 只要是类就必定存在构造方法,如果一个类中没有声明构造方法,那么在编译时,会自动生成一个无参的构造方法。如果一个类中已经明确的声明了一个构造方法,那么就不会再自动生成无参的构造方法,一个类中应该保证至少有一个构造方法。
- 对象
- 要使用对象就必须要对对象进行实例化
- 对象的内容存放在堆内存中,栈内存中保存的是内存存放的地址。只有对象通过new关键字实例化之后才会在堆内存开辟空间进行保存
- 对象属性的默认值:字符串的默认值为null,整数的默认值为0
- 一个栈内存空间只能指向一个堆内存空间,如果想要指向其他的堆内存空间,那么需要先断开已有的指向才可以重新分配新的空间。断开指向的空间便成了垃圾空间,在java中有垃圾回收机制GC会不定期的释放空间。
- String类
- 一个字符串就是一个String类的匿名对象,该对象已经开辟了堆内存空间。
- string类的实例化建议使用直接赋值的方法,如果采用new关键字的方式进行实例化,不管该对象是否已经存在,而是直接开辟新的空间,这样会造成垃圾。
- 使用直接赋值的实例化方法:String str=“hdsodn”;这种方式产生的对象在一个对象池里,如果发现要实例化的对象已经存在,便不再重新定义。这种入池的操作是一种共享的模式。
- 字符串的内容一旦声明则不可改变。
- this关键字
- 调用本类中的方法
- 表示类中的属性
- 可以使用this调用本类的构造方法,必须放在构造方法的首行
- this表示当前对象
- static关键字
- 被static关键字定义的属性,可以被所有对象共享,可以直接使用类名称定义,该属性称之为全局属性(静态属性)
- 类中的方法被static关键字定义后,该方法可以直接由类进行调用
- 非static声明的方法可以去调用static声明的属性或方法,但是static声明的方法是不能调用非static类型声明的属性和方法。原因是static定义的方法在对象未被实例化时就可以被类名调用,而非static定义的方法必须要对象实例化后才可以被调用。
- java中的常用内存区域
- 栈内存空间:保存所有的对象名称(保存了引用的堆内存空间的地址)
- 堆内存空间:保存每一个对象的具体属性内容
- 全局数据区:保存static类型的属性
- 全局代码区:保存所有的方法定义
- final关键字
- 使用final声明的类不能有子类
- 使用final声明的方法不能被子类所覆写
- 使用final声明的变量既为常量,该常量不可以修改,全部的字母都大写
- 抽象类
- 抽象类就像是一个“模板”,他的目的是设计者依据他的格式来修改并创建新的类,但是抽象类并不能直接创建对象,只能是通过抽象类派生出新的类,再由新的派生类创建对象。
- 一个子类只能继承一个抽象类
- 包含一个抽象方法的类必须是抽象类
- 抽象类和抽象方法都要使用abstract关键字声明
- 抽象方法只需要声明不需要实现
- 抽象类必须要被子类继承,子类(如果不是抽象类)必须要覆写抽象类中的所有的抽象方法。
- 接口(interface)
- 接口是由全局变量和公共的抽象方法组成。接口中的抽象方法必须定义为public访问权限,即使省略不写,也是public访问权限,而不是default权限
- 一个子类可以同时实现多个接口(implements),该子类必须要同时覆写全部接口的抽象方法
- 对象的多态性(没太理解)
- 对象的向上转型 父类 父类对象 = 子类实例
- 对象的向下转型 子类 子类对象 = (子类)父类实例
- 在发生向下转型之前必须要先向上转型,否则会发生对象转换异常。
- instanceof关键字:
- 判断一个对象是哪个类的实例
- 对象 instanceof 类
- Object类
- 所有的类都有一个公共的父类Object。所有的对象都可以向Object进行转换,一切的引用数据类型都可以使用Object进行接收。
- Object类常用的方法:
- toString():取得对象内容
- equals():对象进行比较
- hashCode():取得hash码
- 包装类
- 将基本数据包装成类,这样基本数据类型可以成为一个对象
- 对象型包装类(Object的直接子类):Boolean(boolean)、Character(char)
- 数值型包装类(Number的直接子类):Interger(int)、Short(short)、Long(long)、Float(float)、Double(double)、Byte(byte)
- 装箱与拆箱(JDK1.5之后提供了自动装箱与拆箱的操作)
- 装箱:将基本数据类型变成包装类:int x=30;Integer i =new Integer(x);
- 拆箱:将包装类变为基本数据类型:int temp=i.intValue();
- 将基本数据类型转换为字符串
- 在String类型中有valueOf()方法,可以将基本数据类型转换为String类型
- 也可以使用“+”这种方式,但是这种方式会产生垃圾,不建议使用
- 访问控制权限
- private:私有访问权限,可以用在属性的定义与方法的声明上,一旦使用了private关键字声明,则只能在本类中进行访问
- default:默认的访问权限,可以被本包中的其他类所访问,但是不能被其他包的类所访问
- protected:受保护的访问权限,只能被本包或者不同包的子类所访问
- public:公共访问权限:可以在所有类中被访问,不管是否在同一个包中。
posted @
2018-07-08 13:20
Etude
阅读(
195)
评论()
编辑
收藏
举报