Java问题(21——24)

21.java反射机制

Java反射机制就是在程序运行过程中,对于任意一个类,都能够知道这个类的所有属性和方法;

对于任意一个对象,都能够调用它的任意一个方法和属性;

这种动态的获取信息以及动态的调用方法的功能成为Java语言的反射机制。


22.instanceof 关键字

用来判断关键字左边的对象是否为右边类的实例,返回一个Boolean值:

system.out.println(a instanceof b);


23.Java 接口代码示例

interface USB{
	public void install();
	public void work();
}

class Computer{
	public void plugin(USB usb){
		usb.install();
		usb.work();
	}
	
}

class Phone implements USB{
	public void install(){
		System.out.println("手机驱动安装中。");
	}
	public void work(){
		System.out.println("手机开始工作咯。");
	}
}

class Printer implements USB{
	public void install(){
		System.out.println("打印机驱动安装中。");
	}
	public void work(){
		System.out.print("打印问紧啊啦。");
	}
}

class MP3 implements USB{
	public void install(){System.out.println("MP3驱动");};
	public void work(){System.out.println("mp3工作了。");};
	
}

public class MultiThread{
	public static void main(String[] args){
		Computer c = new Computer();
		c.plugin(new Phone());
		c.plugin(new Printer());
		c.plugin(new MP3());
	}

}

happysneaker.com


24.Java static的四种用法:

https://www.cnblogs.com/dotgua/p/6354151.html?utm_source=itdadao&utm_medium=referral



25.Java 的system.out.println();直接输入一个对象是几个意思:

Java中直接输出一个类的对象的时候,会调用这个类的toString()方法,自己写的类没有覆盖这个方法的话就是继承Object类的这个方法,Object中toString()方法的实现是这样的:

       getClass().getName() + "@" + Integer.toHexString(hashCode())。

  后面跟的是这个类的哈希码值,如果希望这个类打印出你希望的格式,你就要覆盖toString方法。

比如下面的代码:

public class Person {
    private static int count = 0;
    int id;
    String name;
    int age;
    
    public Person() {
        id = ++count;
    }
    
    public String toString() {    //就是这个方法
        return "Id:" + id + ", Name:" + name + ", Age:" + age;
    }
    
    public static void main(String[] args) {
        Person p1 = new Person();
        p1.name = "zhangsan";
        p1.age = 10;
        Person p2 = new Person();
        p2.name = "lisi";
        p2.age = 12;
        System.out.println(p1);
        System.out.println(p2);
    }

    /**Output
     * Id:1, Name:zhangsan, Age:10
     * Id:2, Name:lisi, Age:12
     *///~
}



PS.要知道Java抽象类是不能被实例化的,下面的写法叫做匿名内部类,不会报错,但不是实例化了父类,而是实例化了一个无名子类:

抽象类:

public abstract class TestAbs{
    public void printMessage(String msg){
        printMessage2(msg);
    };
    public abstract void printMessage2(String msg);
}


main方法中使用:

TestAbs a = new TestAbs(){
    @Override
    public void printMessage2(String msg){
        System.out.println(msg);
    }
};

a.printMessage("aaa");


可以正常输出。

Unity那些事儿
请先登录后发表评论
  • 最新评论
  • 总共0条评论