面对对象容易维护、容易复用、容易扩展
形式上:字符型是单引号引起的一个字符,字符串是双引号引起的若干个字符
含义上:字符型相当于一个整型值(ASCII码),字符串常量代表一个地址值
占内存:字符常量占2个字节,字符串常量占若干个字节
重载发生在同一个类中,方法名相同,但参数类型,参数个数,顺序不同,方法返回值和访问修饰符可以不同
重写常发生在继承中,子类对父类的方法进行重写,发生在子类中,方法名和参数类型必须相同,返回值范围小于父类,抛出的异常小于父类,访问修饰符的范围大于父类
封装:把类的属性私有化,方法可以提供给外界访问
继承:使用已存在的类的定义作为基础,实现新类的技术,新类可以继续扩展被继承类没有的功能和数据
子类拥有父类所有属性和方法,但只能是拥有,而无法使用
子类可以对父类进行扩展
子类可以通过自己的方式实现父类的方法
多态:是指在程序中对于引用变量所指向的具体类型和其发出的方法调用在编译时并不确定,而是在程序运行时才能确定
在java中两种形式可以实现多态:继承(多个子类对同一方法的重写),和接口(实现接口并覆盖接口中的同一方法)
多态实例:
?
//定义一个抽象类
abstract class Animals5{
abstract void shout();//定义一个抽象方法
}
//定义dog类继承Animal类
class Dog5 extends Animals5{
//实现shout()方法
public void shout() {
System.out.println("汪汪汪。。");
}
}
//定义cat类继承Animals类
class Cat5 extends Animals5{
//实现shout()方法
public void shout() {
System.out.println("喵喵喵。。");
}
}
//测试类
public class Test05_Polymorphic {
public static void main(String[] args) {
Animals5 an1=new Dog5();//“向上转型”类型转换
Animals5 an2=new Cat5();//“向上转型”类型转换
an1.shout();
an2.shout();
Dog5 dog=(Dog5) an1;//“向下转型”类型转换
Cat5 cat=(Cat5) an2;//“向下转型”类型转换
dog.shout();
cat.shout();
//关键字instanceof用来判断对象是否为某个类或接口的实例
if(an1 instanceof Cat5) {
Cat5 cat5=(Cat5) an2;//“向下转型”类型转换
cat5.shout();
}else {
System.out.println("该类型的对象不是Cat5类型!");
}
}
}
String类底层的实现是byte数组储存的字符串且使用了final修饰,所以String对象不可变
而 StringBuffer 和StringBuild都继承AbstractStringBuild类,在这个类中并没有用final保存char数组
String是线程安全的,因为他的对象不可变,相当于常量
操作少量数据使用String;
单线程操作字符缓冲区下操作大量数据:使用StringBuffer
多线程操作字符缓冲区下操作大量数据:使用StringBuild
原文:https://www.cnblogs.com/hya123/p/13923245.html