Java接口与继承常见问题

2025-04-19 03:04:48

1、接口:1,定义一个接口Somepackage com.org.test;public interface Some { //注:接口默认是public abstract且必须是public权限,否则编译不通过,如果没有添加或者添加不全,编译程序会自动帮你添加完整。 void doSome(); //接口中定义的变量默认是public static final的,如果没有添加或者添加不全,编译程序会自动帮你添加完整。 int x=10; public static int y=10;}

2、2,定义一个Other接口 package com.org.test;public interface Other { void doOther();}

3、3,定义殂翼瑟擀实现类Main package com.org.test;public class Main implements Some,Other{ publi艘早祓胂c static void main(String[] args) { System.out.println(Some.x); System.out.println(Some.y); Some some=new Main(); some.doSome(); Other other=(Other)some; other.doOther(); //接口的匿名内部类实现doSome方法并在内部类中添加匿名内部类的doService方法 Some some2=new Some() { @Override public void doSome() { System.out.println("Some2:做一些!"); } public void doService(){ System.out.println("Some2:做一些服务!"); } }; } @Override public void doSome() { System.out.println("Main:doSome"); } @Override public void doOther() { System.out.println("Main:doOther"); }}

4、4,定义抽拇峨镅贪象类 package com.org.test;abstract class AbstractSome implements Some{ //注:抽象类中的抽象方法必须加上public abstract,编译程序不会自动补全,没有的话会编译报错 public abstract void doSome(); public void doService(){ System.out.println("做一些服务!"); } public static void main(String[] args) { //抽象类在创建实例时必须要实现其抽象方法,否则会编译不通过(匿名内部类) AbstractSome some=new AbstractSome() { @Override public void doSome() {//内部为匿名内部类 System.out.println("实现doSome方法!"); } //匿名内部类重写外部类service方法 public void doService(){ } }; some.doService();//此处调用的是匿名内部类的方法,故此打印出来的为空 some.doSome(); }}

5、类的继承问题:1,定义一个父类package com.org.extend;public class Some { protected int x; Some(int x){ this.x=x; } void doService(){ System.out.println("Some:doService!"); } //注:重新hashCode方法必须要加上public权限,否则编译不通过 public int hashCode(){ return 99; } //注:只有抽象类或者接口中才允许出现抽象方法,抽象类要加上abstract,否则编译不通过 }

6、2,定义一个子类 package com.org.extend;public class Other extends Some{ Other(int x) { //注:继承父类,如果子类中没有定义变量x,不可用this.x,否则会编译失败! super(x); } @Override void doService() { System.out.println("Other:doService!"); } public static void main(String[] args) { Other other=new Other(10); other.doService(); Some some=new Other(10); some.doService(); System.out.println(some.x); }}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:39
  • 阅读量:32
  • 阅读量:24
  • 阅读量:81
  • 阅读量:86
  • 猜你喜欢