① java里实现一个接口的类必须要实现接口里的所有方法吗
一、实现接口或继承抽象类的非抽象子类必须实现接口的所有方法或抽象类的所有抽象方法。
接口中的所有方法均为抽象方法,抽象类中包含非抽象方法和抽象方法。如果一个非抽象子类实现了接口,那么该子类必须实现父接口的所有方法。如果一个非抽象子类继承了抽象类,那么该子类必须实现抽象类的所有抽象方法。
二、实现方案
(一)实现接口
1. 定义接口
/**
*接口:表示人类行为
*/
interfaceBehavor{
/**
*抽象方法:“吃饭”方法
*/
voideat();
/**
*抽象方法:“睡觉”方法
*/
voidsleep();
}
2. 定义子类,实现接口
/**
*子类:表示人类,实现“行为”接口
*/
classPersonimplementsBehavor{
/**
*姓名
*/
protectedStringname=null;
publicPerson(Stringname){
this.name=name;
}
//实现接口的抽象方法
@Override
publicvoideat(){
System.out.println(name+"正在吃饭......");
}
//实现接口的抽象方法
@Override
publicvoidsleep(){
System.out.println(name+"正在睡觉......");
}
}
3. 定义调用类,调用方法
publicclassMain{
publicstaticvoidmain(String[]args){
Personp=newPerson("张三其");
p.eat();
p.sleep();
}
}
(二)继承抽象类
1. 定义抽象类
/**
*抽象类:表示人类
*/
abstractclassPerson{
/**
*姓名
*/
protectedStringname=null;
publicPerson(Stringname){
this.name=name;
}
/**
*抽象方法:吃饭
*/
publicabstractvoideat();
/**
*抽象方法:睡觉
*/
publicabstractvoidsleep();
}
2. 定义子类,继承抽象类
/**
*子类:学生类
*/
classStudentextendsPerson{
publicStudent(Stringname){
super(name);
}
//实现抽象类的抽象方法
@Override
publicvoideat(){
System.out.println("学生"+name+"正在吃饭......");
}
//实现抽象类的抽象方法
@Override
publicvoidsleep(){
System.out.println("学生"+name+"正在吃饭......");
}
}
3. 定义调用类,调用方法
publicclassMain{
publicstaticvoidmain(String[]args){
Personp=newStudent("张三其");
p.eat();
p.sleep();
}
}
② java接口中必须都是抽象方法吗,我定义非抽象方法同样可以使用
接口中所有方法都是抽象方法;无论你加不加abstract,所有实现指定接口的类都必须重写并实现该接口的所有方法,否则这个类就是抽象类。
③ java 中,接口中所有方法均为抽象方法,这句话是对的吗
首先明确概念问题,一个类如果是抽象的那么就应该称之为接口interface
接口里面的方法全部是抽象的,也就是方法后面不会出现{};
同时,你在使用的时候去实现这个接口implements
把方法完善了;
在你的父类接口里定义下面这个方法
string
getstring();里面可以放参数,
再搞一个类implements
这个接口,同时把这个方法实现了
string
getstring(){
.......
return
null;
};
④ 如果JAVA中一个类继承的两个接口中有相同方法,怎么办
没法办到……因为接口没有具体逻辑,你怎么实现的就会怎么返回。不论调用的时候是screen类型还是host类型,最后具体的实现都是computer的getSize方法。建议分开实现,因为computer和screen、host不是一个继承关系,而是一个组成关系