标签:父类 object value src 动物 多态 基本 image rap
一个事物的多种形态
父类的引用指向子类的对象(或子类的对象赋给父类的引用)
有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。
●类的继承关系
●方法的重写
package Test;
public class AnimalTest {
public static void main(String[] args) {
AnimalTest test = new AnimalTest();
test.func(new Dog());
test.func(new Cat());
}
//多态性的使用,省去了方法的重载
public void func(Animal animal){//Animal animal = new Dog();
animal.eat();
animal.shout();
}
}
class Animal{
public void eat(){
System.out.println("动物:进食");
}
public void shout(){
System.out.println("动物:叫");
}
}
class Dog extends Animal{
public void eat(){
System.out.println("狗吃骨头!");
}
public void shout(){
System.out.println("汪汪汪");
}
}
class Cat extends Animal{
public void eat(){
System.out.println("猫吃鱼!");
}
public void shout(){
System.out.println("喵喵喵");
}
}
x instanceof A:检验x是否为类A的对象,返回值为boolean型。
?要求x所属的类与类A必须是子类和父类的关系,否则编译错误。
?如果x属于类A的子类B,x instanceof A 值也为true。
●== 既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值,对于引用类型就是比较内存地址
●equals的话, 它是属于java.lang.Object类里面的方法, 如果该方法没有被重写过默认也是==;我们可以看到String等类的equals方法是被重写过的,而且String类在日常开发中用的比较多,久而久之,形成了equals是比较值的错误观点。
●具体要看自定 义类里有没有重写Object的equals方法来判断。
●像String、Date、File、包装类等都重写了Object类中的equals()方法,重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象实体内容是否相同
像String、Date、File、包装类等都重写了Object类中的toString()方法,使得在调用对象的toString()时,返回实体内容。
类型的强转,两者必须有子父类的关系。
●针对八种基本数据类型定义相应的引用类型一包装类(封装类)
●有了类的特点,就可以调用类中的方法,Java才是真正的面向对象
package baozhunglei;
import org.junit.Test;
public class WrapperTest {
//转换成包装类调用构造器
@Test
public void test1(){
int num1 = 10;
Integer in1 = new Integer(num1);
System.out.println(in1.toString());
Integer in2 = new Integer("666");
System.out.println(in2.toString());
Float f1 = new Float(66.6f);
Float f2 = new Float("66.6");
System.out.println(f1);
System.out.println(f2);
Boolean b1 = new Boolean(true);
Boolean b2 = new Boolean("TruE");
System.out.println(b2);//true
Boolean b3 = new Boolean("true666");
System.out.println(b3);//false
}
}
package baozhunglei;
import org.junit.Test;
public class WrapperTest {
@Test
public void test2(){
Integer in1 = new Integer(12);
int i1 = in1.intValue();//转换为基本数据类型
System.out.println(i1 + 1);
}
}
public void test3(){
int num2 = 10;
Integer in1 = num2;
boolean b1 = true;
Boolean b2 = b1;
}
int num3 = in1;
package baozhunglei;
import org.junit.Test;
public class WrapperTest {
@Test
public void test4(){
int num1 = 10;
//方式1:
String str1 = num1 + "";
//方式2:调用String的valueOf()方法
float f1 = 12.3f;
String str2 = String.valueOf(f1);
Double d1 = new Double(12.4);
String str3 = String.valueOf(d1);
}
}
public void test5(){
String str1 = "123";
int num = Integer.parseInt(str1);
}
标签:父类 object value src 动物 多态 基本 image rap
原文地址:https://www.cnblogs.com/nnadd/p/12751310.html