无法理解java中的界面
我正在查看
Java网站上提供的Interface章节
Using Interface as a type 所以我的理解是接口的全部意义在于它就像一个类,但是不可能从它形成对象,但是这个页面说明了如何使用接口作为数据类型.行Relatable obj1 =(Relatable)object1;似乎创建了一个Relatable类型的对象,它是一个接口.虽然我必须说这里没有使用new关键字,因此并没有真正创建对Relatable类型对象的引用.这是否真的导致此行没有创建Relatable类型的对象? 它再次说道
这是什么意思?这是否意味着实现Relatable的任何东西都可以调用findLargest()?如果是这样的话,为什么说两个对象属于同一类? —–编辑—– public interface Relatable { // this (object calling isLargerThan) // and other must be instances of // the same class returns 1,-1 // if this is greater // than,equal // to,or less than other public int isLargerThan(Relatable other); } 使用relatable作为类型: public Object findLargest(Object object1,Object object2) { Relatable obj1 = (Relatable)object1; Relatable obj2 = (Relatable)object2; if ((obj1).isLargerThan(obj2) > 0) return object1; else return object2; } —–编辑2 —– public class HelloWorldAnonymousClasses { interface HelloWorld { public void greet(); public void greetSomeone(String someone); } . . . HelloWorld englishGreeting = new EnglishGreeting(); HelloWorld frenchGreeting = new HelloWorld() { String name = "tout le monde"; public void greet() { greetSomeone("tout le monde"); } public void greetSomeone(String someone) { name = someone; System.out.println("Salut " + name); } }; 那么这是如何工作的呢? 解决方法
否.此行创建Relatable类型的引用(obj1)并将其分配给object1.为了使其工作,必须将object1强制转换为(接口)类型Relatable.
是.
它与isLargerThan()的实现有关.由于任何实现Relatable接口的类都无法了解实现它的其他类,因此无法与其他类进行有意义的比较.因此,为了使其工作,两个对象必须属于同一类. 对编辑2的回应
而不是首先定义一个类然后创建它的实例,就像在EnglishGreeting中一样,frenchGreeting即时创建.封面下发生的是创建一个实现HelloWorld的新类,就像在英语中一样,只是这次是匿名的(你永远不会给它起一个名字).当您需要一次性实现接口时,它只是一个方便的快捷方式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |