java多态反射机制例子(一)

2014-11-24 03:03:10 · 作者: · 浏览: 0

package duotai;

class Customer{

@SuppressWarnings ( "unused" )

private String account;

@SuppressWarnings ( "unused" )

private String password;

//有两个函数名称一样,但是系统可以接受,这叫做函数重载(静态多态性)

//一个函数呈现为多种状态,系统能够根据参数来决定调用谁

//三种情况:参数个数不同,参数个数相同类型不同,个数类型相同出现的顺序不同

//静态是指:虽然函数名只有一个,但是要写代码要写多个

public Customer()

{

System.out.println("构造函数1" );

}

public Customer(String account, String password) {

System.out.println("构造函数2" );

this .account=account;

this .password=password;

}

}

public class CustomerTest {

public static void main(String[] args) {

@SuppressWarnings ( "unused" )

Customer cus1 = new Customer(); //调用构造函数

@SuppressWarnings ( "unused" )

Customer cus2 = new Customer( "3213" , "1213" ); //调用构造函数

}

}

package duotai;

//模块1调用一个对话框,让对话框显示出来

class Module1 {

private Dialog dialog;

public Module1(Dialog dialog) {

this .dialog = dialog;

}

public void callDialog(){

dialog.show();

}

}

abstract class Dialog{

public abstract void show();

}

class Dialog1 extends Dialog {

public void show() {

System.out.println("对话框1显示" );

}

}

//客户对Dialog1不满意想自己开发一个Dialog2,被Module1调用,不能改变Module1原代码

class Dialog2 extends Dialog{

public void show() {

System.out.println("对话框2显示" );

}

}

public class DaliogTest {

public static void main(String[] args) {

Dialog1 dia = new Dialog1();

Module1 mod1 = new Module1(dia);

mod1.callDialog();

}

}

package duotai;

//动态多态性一般在继承时使用

abstract class Person{

public abstract void printInfo();

}

class Student extends Person{

public void printInfo() {

System.out.println("学生打印" );

}

}

class Teacher extends Person{

public void printInfo() {

System.out.println("老师打印" );

}

}

public class StudentTest {

/* public static void print(Student stu) {

stu.printInfo();

}

public static void print(Teacher tea) {

tea.printInfo();

}*/

public static void print(Person p) { //父类的引用可以指向子类对象

p.printInfo();

}

public static void main(String[] args) {

print(new Student());

}

}

package fanshe;

public class Customer {

private String account;

private String password;

public Customer() {

System.out.println("构造函数1" );

}

public Customer(String account, String password) {

System.out.println("构造函数2" );

this .account = account;

this .password = password;

}

public void printInfo() {

System.out.println("账号:" + account + "密码" + password);

}

}

package fanshe;

import java.lang.reflect.Constructor;

import java.lang.reflect.Method;

public class Test1 {

@SuppressWarnings ( "unchecked" )

public