package com.briup.day04;
/**
* 创建什么类型的对象,就只有该类型对象的空间的操作权限。
* 引用指向的是new出来的子类对象>>在堆开辟的空间是子类类型的内存和父类类型的操作权限>>不能调用子类中独有的方法
* instanceof:判断引用指向的内存空间是否为该类型?
*/
public class PolymorphicTest {
public static void main(String[] args) {
A2 a = new A2();
a.show();
System.out.println(a.s);//推荐类名.静态属性:A2.s
/*
* A2 无参构造器
* A2.show: name=null age=0
* 1
*/
B2 b = new B2();
b.show();
System.out.println(b.s);
/*
* A2 无参构造器
* B2 无参构造器
* B2.show name=null age=0 id=0
* 2
*/
A2 c=new B2();
c.show();
System.out.println(c.s);
/**
* A2 无参构造器
* B2 无参构造器
* B2 show null 0 0
* 1
*/
// c.disp();
// System.out.println(c.id);
System.out.println(c instanceof A2); //true
System.out.println(c instanceof B2); //true
//向下转型:父类的引用指向子类的对象
B2 d=(B2) c;
d.disp();
System.out.println(d.id);
}
}
class A2{
String name;
int age;
static int s=1;
public A2() {
System.out.println("A2 无参构造器");
}
public A2(String name, int age) {
this.name = name;
this.age = age;
System.out.println("A2 两参构造器");
}
public void show() {
System.out.println("A2.show:"+" name="+name+" age="+age);
}
}
class B2 extends A2{
int id;
static int s=2;
public B2() {
System.out.println("B2 无参构造器");
}
public B2(int id) {
this.id = id;
System.out.println("B2(int id)");
}
public B2(String name,int age,int id) {
this.name=name;
this.age=age;
this.id = id;
}
@Override
public void show() {
System.out.println("B2.show"+" name="+name+" age="+age+" id="+id);
}
public void disp() {
System.out.println("B2 disp...");
}
}
Java_多态
最新推荐文章于 2024-08-29 18:44:48 发布