面向对象的多态性
Object类
如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类
toString()方法
其返回值是String类型,如果直接打印某对象的引用,则默认会调用这个对象的toString()方法,
默认打印的内容中包含这个引用所指向的内存地址。
可以根据需要在用户自定义类中重写toString()方法。
equals()方法
Object的equals方法定义为:x.equals(y),当x和y指向同一个地址时返回true,否则返回false
String类中已经重写了equals(Object obj)方法,重写后的方法比较的是两个字符串的”内容”是否一样(注意:==比较对象的引用)
对象的多态性主要分为两种
向上转型: 子类对象->父类对象 (程序会自动完成)
格式:
父类 父类对象=子类实例
向上转型后,因为操作的是父类对象,
所以无法找到在子类中定义的新方法;但如果子类重写了父类的某个方法,则调用的是重写后的方法
向下转型:父类对象->子类对象 (必须明确的指明要转型的子类类型)格式:
子类 子类对象=(子类)父类实例
注意:向下转型前先要向上转型。
在java中可以使用instanceof关键字判断一个对象是否属于一个类的实例
final修饰变量(成员变量或局部变量),则成为常量,只能赋值一次
final 类型 variableName;
修饰成员变量时,定义时同时给出初始值,而修饰局部变量时不做要求
抽象类与接口
抽象类不能被实例化,必须被继承,抽象方法必须被重写,生成它的子类
PS;
构造方法、静态方法、私有方法、final方法不能被声明为抽象的方法
接口
种抽象类中只能包含常量和方法的定义,而没有变量和方法的实现
String类、StringBuffer类、StringBuilder类
装箱:将基本数据类型包装为对应的包装类对象
拆箱:将包装类对象转换成对应的基本数据类型
String的两种实例化方式
a:直接赋值法:
eg: String str=“Hello World”;
b:通过new操作符实例化:
eg: String str=new String(“Hello World”);
StringBuffer类:
(1)StringBuffer代表可变的字符序列。
StringBuffer称为字符串缓冲区,它的工作原理是:预先申请一块内存,存放字符序列,如果字符序列满了,会重新改变缓存区的大小,以容纳更多的字符序列。
(2)StringBuffer是可变对象,
这个是与String最大的不同(如果连续操作String对象,则会产生大量的“垃圾”,而且“断开-连接”很频繁。)
Object类
如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类
toString()方法
其返回值是String类型,如果直接打印某对象的引用,则默认会调用这个对象的toString()方法,
默认打印的内容中包含这个引用所指向的内存地址。
可以根据需要在用户自定义类中重写toString()方法。
equals()方法
Object的equals方法定义为:x.equals(y),当x和y指向同一个地址时返回true,否则返回false
String类中已经重写了equals(Object obj)方法,重写后的方法比较的是两个字符串的”内容”是否一样(注意:==比较对象的引用)
对象的多态性主要分为两种
向上转型: 子类对象->父类对象 (程序会自动完成)
格式:
父类 父类对象=子类实例
向上转型后,因为操作的是父类对象,
所以无法找到在子类中定义的新方法;但如果子类重写了父类的某个方法,则调用的是重写后的方法
向下转型:父类对象->子类对象 (必须明确的指明要转型的子类类型)格式:
子类 子类对象=(子类)父类实例
注意:向下转型前先要向上转型。
在java中可以使用instanceof关键字判断一个对象是否属于一个类的实例
final修饰变量(成员变量或局部变量),则成为常量,只能赋值一次
final 类型 variableName;
修饰成员变量时,定义时同时给出初始值,而修饰局部变量时不做要求
抽象类与接口
抽象类不能被实例化,必须被继承,抽象方法必须被重写,生成它的子类
PS;
构造方法、静态方法、私有方法、final方法不能被声明为抽象的方法
接口
种抽象类中只能包含常量和方法的定义,而没有变量和方法的实现
String类、StringBuffer类、StringBuilder类
装箱:将基本数据类型包装为对应的包装类对象
拆箱:将包装类对象转换成对应的基本数据类型
String的两种实例化方式
a:直接赋值法:
eg: String str=“Hello World”;
b:通过new操作符实例化:
eg: String str=new String(“Hello World”);
StringBuffer类:
(1)StringBuffer代表可变的字符序列。
StringBuffer称为字符串缓冲区,它的工作原理是:预先申请一块内存,存放字符序列,如果字符序列满了,会重新改变缓存区的大小,以容纳更多的字符序列。
(2)StringBuffer是可变对象,
这个是与String最大的不同(如果连续操作String对象,则会产生大量的“垃圾”,而且“断开-连接”很频繁。)