Difference:
List는 인터페이스이고 ArrayList는 List 인터페이스의 구현 클래스입니다. ArrayList 클래스는 List 인터페이스를 상속하고 구현합니다.
따라서 List 인터페이스를 생성할 수 없습니다. 즉, 인스턴스 객체를 생성할 수 없지만 다음과 같이 List 인터페이스에 대해 자신을 가리키는 객체 참조와 ArrayList 구현의 인스턴스 객체를 생성할 수 있습니다. class 이는 List 인터페이스를 가리키는 객체 참조 역할을 합니다.
Animals.java public abstract class Animals { //动物名字 String name; //动物叫声 public void shout(){ System.out.println("叫声----"); } } Dog.java public class Dog extends Animals { //狗类独有的方法 public void guard(){ System.out.println("狗独有的看门本领"); } } Test.java public class Test { public static void main(String[] args) throws ClassNotFoundException { Animals a1 = new Animals(); Animals a2 = new Dog(); } }
List list;//正确,list = null; List list = new List();//是错误的用法
List list = new ArrayList();
이 문장은 ArrayList 구현 클래스의 객체를 생성합니다. List 인터페이스로 다시 추적됩니다. 현재는 ArrayList 클래스에 있는 일부 속성과 메서드가 있지만 List 인터페이스에는 더 이상 사용할 수 없으며
ArrayList list=newArrayList();
객체 생성이 유지됩니다. ArrayList의 속성과 메서드 모든 속성과 메서드.
Test.java public class Test { public static void main(String[] args) throws ClassNotFoundException { Animals a2 = new Dog(); a2.shout(); a2.guard(); } }
상위 클래스는 더 이상 상위 클래스에는 표시되지만 하위 클래스에는 표시되지 않는 메서드를 호출할 수 없습니다. 그렇지 않으면 컴파일 오류가 발생합니다.
다음과 같은 경우:
List a=new ArrayList();
그러면 a는 List의 모든 속성과 메서드를 가지며 구현 클래스 ArrayList의 고유한 속성과 메서드는 갖지 않습니다.
List와 ArrayList가 동일한 속성(예: int i)과 동일한 메소드(예: void f())를 갖는 경우
then a.i가 List i에서 호출됩니다. , a.f()는 ArrayList에서 f()를 호출합니다.
문제의 핵심:
를 사용하는 이유 List list = new <code>ArrayList alist = new ArrayList()
대신 ArrayList() 를 사용하시겠습니까? List list = new ArrayList()
而不用 ArrayList alist = new ArrayList()
呢?
问题就在于List接口有多个实现类,现在你用的是ArrayList,也许哪一天你需要换成其它的实现类,如:
LinkedList或者Vector等等,这时你只要改变这一行就行了: List list = new LinkedList();
其它使用了list地方的代码根本不需要改动。
假设你开始用ArrayList alist = new ArrayList()
ArrayList alist = new ArrayList()
사용을 시작했고 이제 몇 가지 변경 사항을 적용했다고 가정해 보겠습니다. 특히 ArrayList 구현 클래스의 고유한 메서드와 속성을 사용하는 경우 더욱 그렇습니다. #🎜🎜##🎜🎜#추천 튜토리얼: #🎜🎜#JavaTutorial#🎜🎜##🎜🎜#위 내용은 자바에서 list와 arraylist의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!