글쎄, 이해하고 직접 입력해야 해요! ! ! 이러한 질문은 인터페이스와 추상 클래스에 대해 더 많이 배우는 데 도움이 되었습니다.
1. 제품 필드 디자인:
제품 이름, 무게, 가격, 액세서리 수량, 액세서리 제조업체(여러 제조업체가 있을 수 있으므로 배열입니다.)
요구 사항: 생성자가 있습니다
toString을 재정의합니다. 메소드
두 항목을 비교하는 equals 메소드를 다시 작성하세요
package TT; import java.util.Arrays; public class G { private int 重量; private String 商品名称; private int 价格; private int 配件数量; private String[] 配件制造厂商列表; public G(int 重量, String 商品名称, int 价格, int 配件数量, String[] 配件制造厂商列表) { super(); this.重量 = 重量; this.商品名称 = 商品名称; this.价格 = 价格; this.配件数量 = 配件数量; this.配件制造厂商列表 = 配件制造厂商列表; } @Override public String toString() { return "G [重量=" + 重量 + ", 商品名称=" + 商品名称 + ", 价格=" + 价格 + ", 配件数量=" + 配件数量 + ", 配件制造厂商列表=" + Arrays.toString(配件制造厂商列表) + "]"; } public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof G) { G goods = (G) obj; if (this.重量 == goods.重量 && this.价格 == goods.价格 && this.商品名称.equals(goods.商品名称) && this.配件数量 == goods.配件数量) { for (int i = 0; i < this.配件制造厂商列表.length; i++) { if (this.配件制造厂商列表[i] != goods.配件制造厂商列表[i]) { return false; } } return true; } else { return false; } } else { return false; } } //将测试类和上面的放一块儿了 public static void main(String[] args) { String[] 厂商列表1 = { "微软", "索尼", "三星" }; String[] 厂商列表2 = { "微软", "索尼", "三星" }; G g1 = new G(40, "电脑", 4000, 30, 厂商列表1); G g2 = new G(40, "显示器", 4000, 30, 厂商列表2); System.out.println(g1); System.out.println(g2); System.out.println(g1.equals(g2)); } }
2. 추상 클래스를 설계하고 그 사용법을 보여줍니다(레벨 3)
package TT; //抽象类 abstract class 数学老师标准{ abstract void 讲数学(); abstract int add(int a,int b); } //第二级抽象类 abstract class 普通数学老师标准 extends 数学老师标准{ void 讲数学(){ System.out.println("我能讲数学"); } } //第三级抽象类 class 真正的数学老师 extends 普通数学老师标准{ //注意这里能不能用abstract修饰,修饰了以后会对上下的影响 //可以重写,也可以不重写 void 讲数学(){ System.out.println("我能讲高数"); } int add(int a,int b){ return a+b; } } class Test{ public static void main(String[] args) { 数学老师标准 t1=new 真正的数学老师(); int result=t1.add(44, 4444); System.out.println("计算结果是:"+result); t1.讲数学(); } }
3. 인터페이스를 설계하고 구현 클래스를 구현합니다
package TT; interface 银行标准{ int MONEY=9900000; void 取钱(); void 存钱(); } class 工商银行 implements 银行标准{ public void 取钱(){ System.out.println("钱进银行了"); } @Override//全部方法都拿来 public void 存钱() { System.out.println("钱出去了"); } } public class Test { public static void main(String[]args){ 银行标准 bank=new 工商银行(); bank.取钱(); bank.存钱(); System.out.println("银行的老底是"+银行标准.MONEY);//此处银行标准用bank会报错,The static field 银行标准.MONEY should be accessed in a static way } }
5. 클래스를 상속하면서 두 개의 인터페이스를 구현합니다(구체적으로는 직접 디자인한 인터페이스)
package TT; interface 建筑标准 { void kaimen(); void guanmen(); } interface 银行标准 { int MONEY = 9999; void 取钱(); void 存钱(); } class 工商银行 implements 银行标准,建筑标准 { @Override public void kaimen() { System.out.println("我能开门"); } @Override public void guanmen() { // TODO Auto-generated method stub System.out.println("我能关门"); } @Override public void 取钱() { // TODO Auto-generated method stub System.out.println("我能取钱"); } @Override public void 存钱() { // TODO Auto-generated method stub System.out.println("我能存钱"); } } public class Test2 { public static void main(String[] args) { 工商银行 bank = new 工商银行(); bank.取钱(); bank.存钱(); System.out.println("銀行的底是" + 工商银行.MONEY); bank.kaimen(); bank.guanmen(); } }
마지막 부활절 달걀 부활절 달걀! ! ! !
실습할 때 이 예제들을 같은 TT 패키지에 넣었기 때문에 총 5개의 파일이 있습니다. 마지막으로 위의 마지막 세 가지 예에서는 오류를 보고하기 시작했습니다(예: 오류: 은행 표준 유형이 이미 정의되어 있음).
아아아아아아아, 30분 동안 디버깅을 했는데도 여전히 제대로 작동하지 않습니다. 나중에 나는 진정하고 생각했습니다. Eclipse에서 XXX가 정의되었다는 메시지가 표시되므로 동일한 패키지에 있는 한 아무리 많은 클래스를 생성하더라도 동일한 클래스 이름을 가진 파일을 반복적으로 정의할 수 없다는 뜻일까요? 그런 다음 두 개를 삭제하기 시작했고, 확실히 성공했습니다. 잘 생각해보면 같은 패키지에 있는 public 클래스에 접근이 가능하기 때문에 이러한 배타성은 검증이자 많은 리소스를 절약할 수 있다.
위 내용은 인터페이스 및 추상 클래스에 대한 Java 기본 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!