Java 学习引用

//引用类型:变量的类型。
//对象类型:通过new创建对象时的类型,new后面的类名。

//对象:对象是通过类这个模板生成的一个具体实例。
// 对象存放在堆区,对象是通过new关键字创建的。
//引用:代表所指向对象的 变量。引用的本质是所指向
// 的对象的首地址。引用是存放在栈或堆。

Cat c = new Cat(“女”,1);
System.out.println©;
//c是引用,引用类型是Cat
//new Cat在堆区创建了一个对象。对象类型是Cat

Animal d = new Cat(“男”,2);
System.out.println(d);
//引用是d,引用类型是Animal
//new Cat是对象,对象类是Cat
d.bark();

Cat e = (Cat)new Animal(“女”,3);
// e.bark();

Animal a10 = new Cat(“男”,2);
//系统会在编译期检查类型时候能调用某法或某属性。
//a10.sleep();
//运行期,运行期运行方法的时候,
//只关注你对象类而不关注你引用类型
Cat c10 = (Cat)a10;
c10.bark();
c10.sleep();

//向上转型:子类往父类转。系统自动完成。
// 父类型 变量可以保存子类型对象。
//向下转型:父类往子类转。需要强转转换。
// 有可能失败,有可能成功。
// 如果转后的引用类型与对象的实际类型一致,可以成功。
// 如果转后的引用类型与对象的实际类型不一致,会失败。
//向上转型:父类引用保存子类对象。
Person p1 = new Teacher(“崔亚允”,18);
Person p2 = new Student(“金赛赛”,25);
System.out.println(p1);
System.out.println(p2);

//向上转型的问题:
//范围缩小,子类特有的方法或者属性,父类没有。
//只考虑共性,不考虑特性。
//向上转型是必定成功的。
//p1.teach();

//向下转型
//范围扩大,对象范围小,引用范围大。
//引用类型是子类型,对象类型是父类型。
// Person p3 = new Person(“崔晨燚”,22);
// Student stu = (Student)p3;
// stu.study();

// Person p4 = new Student(“娄亚峰”,21);
// Student stu2 = (Student)p4;
// stu2.study();

// Person p5 = new Teacher(“李赛”,40);
// Student stu3 = (Student)p5;
// stu3.study();

扫描二维码关注公众号,回复: 5632030 查看本文章

Student stu10 = new Student(“张三”,22);
//instanceof是一个运算符。
//判断某个对象是否属于某一类
//判断某个对象是不是某个类的实例。
//一般 instanceof 出现在if语句中。
//先判断引用是不是某种类型,如果是,我再强转。
boolean a = stu10 instanceof Student;
boolean b = stu10 instanceof Person;
boolean c = stu10 instanceof Object;
boolean d = (Object)stu10 instanceof Teacher;
System.out.println(a);
System.out.println(b);
System.out.println©;
System.out.println(d);

猜你喜欢

转载自blog.csdn.net/weixin_43791238/article/details/88768249
今日推荐