java关于instance的定义
java中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。
但是instanceof在Java的编译状态和运行状态是有区别的:
在编译状态中,class可以是object对象的父类,自身类,子类。在这三种情况下Java编译时不会报错。
在运行转态中,class可以是object对象的父类,自身类,不能是子类。在前两种情况下result的结果为true,最后一种为false。但是class为子类时编译不会报错。运行结果为false。
扩展资料
例子:
接口Person
public interface Person {
public void eat();
}
实现类People
public class People implements Person {
private int a=0;
@Override
public void eat() {
System.out.println("======"+a);
}
}
子类xiaoming:
public class xiaoming extends People {
private String name;
@Override
public void eat() {
System.out.println("+++++++++");
}
}
主函数
public static void main(String[] args) {
People p=new People();
xiaoming x=new xiaoming();
System.out.println(p instanceof Person);
System.out.println(p instanceof xiaoming); -----2
System.out.println(x instanceof Person);
System.out.println(x instanceof People);
}
注意:上面2处的代码在编译时不会报错。
运行结果:
true
false
true
true
参考资料:百度百科:Java
百度百科:instance
python中的instance是什么对象类型
在python2中,如果定义类时继承了object,那么实例化后对象的type就是该类
>>>class Apple(object): pass
...
>>>red_apple = Apple()
>>>type(red_apple)
>>>
但如果定义类的时候没有继承object,实例化后对象的type将会是 instance
>>>class Apple(): pass
...
>>>green_apple = Apple()
>>>type(Apple)
>>>
去看urllib2的源代码,你会发现build_opener返回的对象是从这个东西继承而来的:
class BaseHandler:
def add_parent(self, parent):
self.parent = parent
def close(self):
self.parent = None
它没有继承object,所以,它的type是instance
继承object的类的写法叫做 New-style classes,是在 python 2.2 中引入的,之前的写法被称作 Old clasess或 Classic classes
Java 中 newInstance 方法和 new 的区别是什么
1.new 是java中的关键字,是创建一个新对象的关键字。用new这个关键字的话,是调用new指令创建一个对象,然后调用构造方法来初始化这个对象,如果反编译class的话,会看到一个Object obj=new Object();这种语句,会先调用new指令生成一个对象,然后调用dup来复制对象的引用,最后调用Object的构造方法。
2.newInstance 不是关键字,newInstance() 是java反射框架中类对象(Class)创建新对象的方法。在这个过程中,是先取了这个类的不带参数的构造方法,然后调用构造方法的newInstance来创建对象
名:Object java.lang.Class.newInstance();如: Class clazz = String.class;
Object newInstance = clazz.newInstance();
3.newInstance() 也经常见于工厂设计模式中,在该模式中,共产类的该方法返回一个工厂bean。
如: Factory factory = new Factory();
Object obj = factory.newInstance();
4.严格意义上来讲,这两者并没有可比较性,因为一个是java的关键字,有明确的用法和定义。一个是经常使用,但非标准的方法名称。
Java 中 newInstance 方法和 new 的区别是什么
在初始化一个类,生成一个实例的时候;newInstance() 和 new 有什么区别?
用newInstance与用new是区别的,区别在于创建对象的方式不一样,前者是使用类加载机制,那么为什么会有两种创建对象方式?这个就要从可伸缩、可扩展,可重用等软件思想上解释了。
Java中工厂模式经常使用newInstance来创建对象,因此从为什么要使用工厂模式上也可以找到具体答案。
例如:
Class c = Class.forName(“A”);factory = (AInterface)c.newInstance();
其中AInterface是A的接口,如果下面这样写,你可能会理解:
String className = “A”;Class c = Class.forName(className);factory = (AInterface)c.newInstance();
进一步,如果下面写,你可能会理解:
String className = readfromXMlConfig;//从xml 配置文件中获得字符串Class c = Class.forName(className);factory = (AInterface)c.newInstance();
上面代码就消灭了A类名称,优点:无论A类怎么变化,上述代码不变,甚至可以更换A的兄弟类B , C , D….等,只要他们继承Ainterface就可以。
从jvm的角度看,我们使用new的时候,这个要new的类可以没有加载;
但是使用newInstance时候,就必须保证:1、这个类已经加载;2、这个类已经连接了。而完成上面两个步骤的正是class的静态方法forName()方法,这个静态方法调用了启动类加载器(就是加载javaAPI的那个加载器)。
有了上面jvm上的理解,那么我们可以这样说,newInstance实际上是把new这个方式分解为两步,即,首先调用class的加载方法加载某个类,然后实例化。
这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了我们降耦的手段。
[补充:]
newInstance: 弱类型。低效率。只能调用无参构造。
new: 强类型。相对高效。能调用任何public构造。
newInstance()是实现IOC、反射、面对接口编程 和 依赖倒置 等技术方法的必然选择,new 只能实现具体类的实例化,不适合于接口编程。
里面就是通过这个类的默认构造函数构建了一个对象,如果没有默认构造函数就抛出InstantiationException, 如果没有访问默认构造函数的权限就抛出IllegalAccessException
java 什么是 instance method
instance method就是成员方法的意思,一般类里定义的常规方法都是成员方法。这些方法在调用的时候是需要构建实例(对象),然后通过实例来调用。区别于类方法(class method),不需要实例就能直接通过类名调用。
扩展
instance method 和 class method 能分别举个例子吗
补充
你代码里的getMathMark就是instance method, 假设你的类名叫StudentMark,那么调用方式就是:
StudentMark sm = new StudentMark(); //如果构造方法无参的话
System.out.println(sm.getMathMark); //这里显示mathMark的值
class method的话,自己定义要用static关键词。jdk的类库中有很多是这样定义的,比如Math类中的很多方法,这里调用一个开根号的方法:
System.out.println(Math.sqrt(100)); //这里做开根运算,显示10
java中instanceof是干什么的呢?
判断对象属于哪种类型的
if(obj instanceof class)
{
}
其返回true情况如下
1.obj是class类的对象
2.obj是class类子类的对象
Java 中 newInstance 方法和 new 的区别是什么
1.new 是java中的关键字,是创建一个新对象的关键字。用new这个关键字的话,是调用new指令创建一个对象,然后调用构造方法来初始化这个对象,如果反编译class的话,会看到一个Object obj=new Object();这种语句,
java问题:instance 有什么用?
instanceOf 运算符,比较对象是否属于类,只能应用于if语句里
比如 if("s" instanceOf String )
............
aa("ss");
........
public static void aa(Object s)
{
if( s instanceOf String
System.out.println("Y");
}
else
System.out.prinltn("N");
运行结果是Y
java中Instance的作用什么?
这是单例模式,一般用于比较大,复杂的对象,只初始化一次,应该还有一个private的构造函数,使得不能用new来实例化对象,只能调用getInstance方法来得到对象,而getInstance保证了每次调用都返回相同的对象