-------------静态多态----------
class Custom{
private String name;
private String pwd1;
//一个类里可以有名称相同的函数,系统可以接受,这叫做函数重载,(静态多态性)
//一个函数可以程多种状态,系统能够根据参数来决定调用谁
//三种情况:1参数的个类不同,2.参数个类相同,类型不同,3,参数的个数相同,类型相同,顺序要不同
//静态是指:虽然函数名只一个,但是函数名代码得写多个 如Custom(
public Custom(String name,String pwd2){
System.out.println("2");
this.name=name; //将传入的参数赋值给上面的name;
this.pwd1=pwd2;
}
public Custom(){
System.out.println("构造函数1");
}
public String getname(){
return name;
}
}
public class Test {
public static void main(String[] args){
Custom c2=new Custom("amd","123");
Custom c=new Custom();
System.out.println(c2.getname());
}
------------------------------------------------
//动态函数一般在继承上使用
abstract class Porint{
public abstract void porint();
}
class Student extends Porint{
public void porint(){
System.out.println("Student");
}
}
class Teacher extends Porint{
public void porint(){
System.out.print("Teacher");
}
}
public class Test {
//静态函数的缺陷,要写多个函数,而动态函数只有写一个就可以
public static void porint(Student p){ //父类的引用可以指向子类对象
p.porint();
}
public static void main(String[] args){
porint(new Student()); //new Student() 输出student
}
}
-------------------------
public class Custom {
private String name;
private String pwd;
public Custom(){
System.out.println("构造函数1");
}
public Custom(String name,String pwd){
System.out.println("构造函数2");
this.name=name;
this.pwd=pwd;
}
public void getprint(){
System.out.println("w------"+name+"----->"+pwd);
}
//反射可以降低偶合性,增加灵活性
public class Test {
public static void main(String[] args) throws Exception{
//classname可以写入配置文件里
//假如虽要更换某个类的话,只要修改配置文件就可以
//还有就是就是虽要调用用某个类的话,可以将classname当参数传入
String classname="com.donnie2.Custom";
Class c=Class.forName(classname);
//c.newInstance();//读取无参数的构造函数
//Constructor cr=c.getConstructor(new Class[]{});//得不带参数的构造函数
//Object obj=cr.newInstance(new Object[]{}); //调用无参构造函数
Constructor cr=
c.getConstructor(new Class[]{Class.forName
("java.lang.String"),Class.forName("java.lang.String")});
Object obj=cr.newInstance(new Object[]{"111","222"});
//用mehtod获得对象中的方法
Method m= c.getMethod("getprint", new Class[]{});
m.invoke(obj, new Class[]{}); //invoke 执行 ,new Class[]{}代表参数
}
}
分享到:
相关推荐
这个压缩包包含了多个子文件,涵盖了JSP、Servlet、集合、JDBC、多态与反射等核心主题,为学习者提供了丰富的实践案例。 1. **JSP**:JSP(JavaServer Pages)是Java平台上用于创建动态网页的技术。附5Jsp2、附4Jsp...
3. **多态与反射**:多态是面向对象编程的核心特性,要能够清晰解释其含义;反射则是运行时动态调用方法和访问字段的关键技术。 4. **Java.util包**:尤其是容器类(如ArrayList、LinkedList、HashMap等)的使用和...
6. 反射与多态的结合:反射可以在运行时动态地识别和调用多态方法。例如,可以使用反射来获取对象的类型信息,然后根据其实际类型动态调用适当的方法。这在处理未知类型的对象或实现通用算法时特别有用。 总结来说...
该项目是一个专注于Java编程基础学习的源码集,涵盖JDK接口、多态、继承、封装与反射等核心概念。源码集包含43个文件,其中Java源文件22个,CSS样式文件7个,以及HTML、下载链接、文档和其他辅助文件。通过这个源码...
文章目录背景方案枚举接口实现多态总结 背景 工作中经常会有一些swich case或者if else的情况。一般这种情况一开始可能只有几个,但是几次迭代之后可能就会有非常多。...这个问题不难,关键解决方案就是多态+反射。多
此外,多态与重载的混合使用在面试中经常出现。例如,类`A`中定义了两个`show`方法,分别接受`D`和`A`类型的参数,而类`B`继承自`A`并重写了`show(D)`方法。此时,如果有一个`B`类型的对象`b`,并使用`A`类型的引用...
文章还包括了一些进阶技巧,如接口与抽象类的区别与使用、动态绑定与静态绑定、Java反射与Lambda表达式的结合等。并给出了最佳实践建议。 适合人群:具备一定Java编程基础的开发者。 使用场景及目标:适用于初学者和...
**密封类(Sealed Classes)**是Kotlin编程语言中的一种特性,用于限制类的继承。它们主要用于表示有限的、...了解并掌握`moshi-sealed`的使用,可以提升Kotlin项目中JSON序列化的能力,特别是在处理多态数据结构时。
本文旨在解决Java多态调用唯一性确定问题,通过使用Soot开源工具和Java的反射机制,分析Java程序多态调用关系,确定函数调用路径,指导测试人员设计出高效、覆盖率高的测试用例。 Java多态性是面向对象语言中一个...
3. **getClass()方法**:返回对象的运行时类,可以用来获取对象所属的类信息,常用于反射机制。 ```java Object obj = new Object(); Class<?> clazz = obj.getClass(); // 获取Object类 ``` 4. **toString()...
1. 动态类型检查:反射可以在运行时检查对象的实际类型,这在多态编程和泛型中非常有用。 2. 调用私有方法和访问私有字段:通过反射,开发者可以绕过封装性,直接访问和修改私有成员,尽管这通常不推荐,但在某些...
Java反射机制是Java编程语言中的一个重要特性,它允许...每个demo都应该设计为解决一个特定的问题,例如如何动态调用私有方法,如何通过反射实现多态等。在实践中学习,你会更好地理解Java反射机制的威力和应用场景。
7. **Interface Support**:AS3反射也允许在运行时检查对象是否实现了特定接口,这在多态和设计模式中很常见。 使用反射时需要注意的事项: 1. **性能影响**:反射操作通常比直接的静态调用慢,因为它们涉及运行时...
反射允许检查一个类型是否实现了特定的接口,这在多态设计中非常有用。`Type.IsAssignableFrom()`方法可以判断一个类型是否可以赋值给另一个类型,从而确定接口实现关系。 7. **委托与事件**: 反射可以用于动态...
- 实现多态:反射可以用于实现接口或继承类的动态绑定。 - 动态处理集合:反射可以遍历集合中的对象并执行特定操作。 - 框架开发:许多Java框架如Spring、Hibernate利用反射实现依赖注入和元数据驱动。 5. 示例: ...
本文将深入探讨如何使用C#中的反射与接口进行交互,以及如何动态调用DLL中的接口方法。 首先,让我们理解什么是反射。反射是.NET框架提供的一种能力,允许代码在运行时获取关于自身的信息,并且能够动态地创建类型...
PHP 5引入了完整的OOP支持,包括类、对象、继承、封装、多态等概念。 在PHP中,反射API(Reflection API)是另一个关键工具,它允许我们在运行时检查类、接口、函数、方法、常量等元数据。反射API提供了一种动态...
6. **映射表(Mapping Table)**:通过创建一个映射表,将类名(字符串)与类信息(如构造函数指针)关联起来,可以实现基于字符串的类实例化。映射表可以用模板和运行时查找来构建。 7. **编译时反射(Compile-...
实现多态性行为的方法有以下几种:后期绑定,,多接口,反射,继承.后期绑定实际上是以降低性能和编程的便利性为代价来实现纯多态性的。通过多接口和继承实现多态性,性能更好,编程也更容易。通过反射,我们既可以使用...