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,定义一个Other接口
package com.org.test;
public interface Other {
void doOther();
}
3,定义实现类Main
package 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,定义抽象类
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();
}
}
-------------------------类的继承问题
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,否则编译不通过
}
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);
}
}