一.算法题部分收获
<1>关于String和int互相转换方法:
1.int转String:
int a=13;
String res=String.valueOf(a);
2.String转int:
String str="abcde";
int a=Integer.valueOf(str).intValue();
<2>判断两个字符串String是否相等:
不能用==判断,得用equals方法判断
String a1="aaa";
String a2="aaa";
if(a1==a2)//错误写法,字符串无法用==判断相等
if(a1.equals(a2))//正确写法
二.JAVA部分收获
1.继承中的方法重写override
子类重写覆盖父类的同名方法:<1>子类方法与父类同名,参数列表相同 <2>子类方法返回值与父类方法相同,或为父类方法的子类。<3>子类方法不能缩小父类方法的访问权限。
2.JAVA第三大特性:多态
<1>多态的两种体现方式:
1.方法的多态:重载体现在多态
2.对象的多态(多态的核心):
(1)一个对象的编译类型和运行类型可以不一致
(2)编译类型在定义对象时就确定了,无法改变,运行类型是可以改变的。
(3) 编译类型看=左边,运行类型看=右边。
Animal animal = new Dog(); //animal编译类型是Animal,运行类型是Dog
animal = new Cat();//运行类型变为Cat
3.多态的细节和注意事项
(1)多态的前提:存在继承关系
(2)多态的向上转型:父类指向子类对象,相当于子类向上转型。运行类型是子类,编译类型是父类。特别重要:可以调用父类所有方法,不能调用子类特有方法。因为在编译阶段决定能调用哪些成员,所以编译类型决定了能调用哪些方法成员。(但依旧要遵守访问权限)
(3) 编译类型看=左边,运行类型看=右边。
(4)多态的向下转型:语法:子类类型 引用名=(子类类型) 父类引用;
Animal animal =new Cat(); //Cat有一个特有方法catchFish();
animal.catchFish();//错误,无法访问Cat特有方法
Cat cat=(Cat) animal;//向下转型
cat.catchFish();//成功
<1>向下转型要求父类引用必须指向当前子类对象,即animal指向Cat;
Animal animal =new Cat(); //Cat有一个特有方法catchFish();
animal.catchFish();//错误,无法访问Cat特有方法
Dog dog=(Dog) animal;//向下转型失败,因为animal没有指向Dog
(5)属性没有重写之说,属性看编译类型
Animal animal =new Cat(); //Cat有一个特有方法catchFish();
animal.name;//假设Cat和Animal都有name,此处调用Animal类的name,看编译类型
(6)A instanceof B方法,判断A的运行内存是否和B是同一个类,或为B的子类
4.JAVA的动态绑定机制
<1>当调用对象方法时,该方法会和该对象的运行类型绑定。
<2>当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用。
5.多态数组
数组的类型时父类,数组里面的对象包含子类对象。遵循上述所有原则
Person[] person =new person[5];
person[0]=Student(name,age);
person[1]=Person(name,age);
//...
6.多态参数:
形参是父类类型,实参可以是子类类型