Java接口与继承常见问题

2025-10-18 20:26:04

1、接口:

1,定义一个接口Some

package 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,定义实现类

Mainpackage com.org.test;

public class Main implements Some,Other{   

public 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。
相关推荐
  • 阅读量:129
  • 阅读量:77
  • 阅读量:125
  • 阅读量:25
  • 阅读量:67
  • 猜你喜欢