导航:首页 > 编程语言 > java父类获取子类

java父类获取子类

发布时间:2022-06-05 03:03:17

java中怎样获取一个类的所有子类

1、面向对象思想的继承是子类继承父类,父类被其它子类继承在JAVA虚拟机的容器中并没有直接接口获取;

2、如果是在一个项目内获取父类的子类继承情况,参考这个代码:

packagefind;

importjava.io.File;
importjava.io.IOException;
importjava.net.URL;
importjava.util.ArrayList;
importjava.util.List;

importfind.test.Intf;
importfind.test.Man;

publicclassClassUtil{
publicstaticvoidmain(String[]args){
try{
System.out.println("接口实现类:");
for(Class<?>c:getAllAssignedClass(Intf.class)){
System.out.println(c.getName());
}
System.out.println("子类:");
for(Class<?>c:getAllAssignedClass(Man.class)){
System.out.println(c.getName());
}
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}

/**
*获取同一路径下所有子类或接口实现类
*
*@paramintf
*@return
*@throwsIOException
*@throwsClassNotFoundException
*/
publicstaticList<Class<?>>getAllAssignedClass(Class<?>cls)throwsIOException,
ClassNotFoundException{
List<Class<?>>classes=newArrayList<Class<?>>();
for(Class<?>c:getClasses(cls)){
if(cls.isAssignableFrom(c)&&!cls.equals(c)){
classes.add(c);
}
}
returnclasses;
}

/**
*取得当前类路径下的所有类
*
*@paramcls
*@return
*@throwsIOException
*@throwsClassNotFoundException
*/
publicstaticList<Class<?>>getClasses(Class<?>cls)throwsIOException,
ClassNotFoundException{
Stringpk=cls.getPackage().getName();
Stringpath=pk.replace('.','/');
ClassLoaderclassloader=Thread.currentThread().getContextClassLoader();
URLurl=classloader.getResource(path);
returngetClasses(newFile(url.getFile()),pk);
}

/**
*迭代查找类
*
*@paramdir
*@parampk
*@return
*@throwsClassNotFoundException
*/
privatestaticList<Class<?>>getClasses(Filedir,Stringpk)throwsClassNotFoundException{
List<Class<?>>classes=newArrayList<Class<?>>();
if(!dir.exists()){
returnclasses;
}
for(Filef:dir.listFiles()){
if(f.isDirectory()){
classes.addAll(getClasses(f,pk+"."+f.getName()));
}
Stringname=f.getName();
if(name.endsWith(".class")){
classes.add(Class.forName(pk+"."+name.substring(0,name.length()-6)));
}
}
returnclasses;
}
}

㈡ java有父类对象引用指向子类对象

List 是接口
ArrayList是 List的实现类。
list a =new Arraylist();是父类引用指向子类对象,只能调用父类里有的方法。
Arraylist a =new Arraylist();更灵活。除了能调用父类以有的方法。还能调用ArrayList中独有的方法。更全面更强大。(但是也有缺点,就是Arraylist 查询快,如果有一天程序需要修改为删除快,那么原来使用 Arraylist 的时候如果使用了Arraylist 自身有的方法那么修改成linkedList相当麻烦!繁琐!)
下面请听我说,List 下有 Arraylist 和 linkedList
父类引用指向子类对象是多态的表现,
就是说一开始就用List 父类引用指向子类对象(Arraylist 和 linkedList)那么可以限制两个实现类只能用父类里有的方法,这样,程序将来无论是更换 Arraylist 也好 或者更换linkedList也罢,都不会影响其他语句。

㈢ java 父类如何在运行期动态获取子类类名

在父类中设计一个获取类名的方法
protect String getName(){
return getClass().getSimpleName();
}
到时直接调用就可以获取子类类名了

㈣ java子类继承父类 ,父类调用子类的属性和方法吗

你理解错了,那是一切皆对象,是子类方法,确实父类对象,我的理解只能到这个程度

㈤ java父类怎么访问子类数据成员

用父类的类型 保存 子类的对象Person p=new Student();用人类的类型p 保存 学生类的对象。此时p对象就可以调用Student类里面的成员了。这就实现了用父类调用子类的成员。

㈥ java父类调用子类方法

//保存为Shape.java
import java.util.ArrayList;

public abstract class Shape {
public abstract void draw();
public static void main(String[] args) {
ArrayList shapes = new ArrayList();
shapes.add(new Square());
// shapes.add(new Shape()); // ERROR ONE
((Square)shapes.get(0)).draw();
// shapes.get(0).draw(); // ERROR TWO
}
}

//保存为Square.java
public class Square extends Shape {
public void draw () {
System.out.println("The square is being drawn.");
}
}

㈦ java继承中父类可以访问子类哪些属性

父类能访问子类 public static修饰的属性;

㈧ java怎么获取某个父类(或接口)的所有子类

对啊,你在b类添加对name属性的注解是不会影响你的父类的,虽然说是这个属性是父类继承下来的。而你c类继承a类,b类什么操作是c类是不知道的,因为c类只和a类有关系,而和b是没有关系的,继承只是扩展不可能会修改父类的。

㈨ Java 子类继承父类,子类重写父类方法,这种情况下父类可以获取到子类的数据吗

有好几种可能 主要看new 语句是怎么写的了

阅读全文

与java父类获取子类相关的资料

热点内容
如何新建密码访问文件夹 浏览:60
什么app最搞笑 浏览:94
CS编辑命令 浏览:947
程序员编码是指什么 浏览:525
在云服务器上安装软件 浏览:270
什么app可以免费听周董的歌 浏览:364
netmvcpdf 浏览:209
arp服务器回送的是什么地址 浏览:103
生物学pdf百度云 浏览:963
markdown源码包怎么下载 浏览:598
餐饮app开发公司哪个好 浏览:637
解压盒子2无广告 浏览:623
华为鸿蒙系统怎么放大单个文件夹 浏览:587
phpwin864 浏览:914
boll优化源码公式 浏览:906
连接服务器端口号是如何确定的 浏览:14
gsm源码 浏览:475
单片机点阵滚动 浏览:407
加密资产平台 浏览:721
二级建筑师pdf教材 浏览:324