黑马程序员技术交流社区
标题:
抽象类实现继承的疑问?
[打印本页]
作者:
严露华
时间:
2013-5-9 12:53
标题:
抽象类实现继承的疑问?
本帖最后由 严露华 于 2013-5-11 07:29 编辑
下了下面的代码,一直想不清楚如何写代码才能将接口中的lisi,18打印出来?那么抽象类实现了继承是否需要覆写方法,覆写方法后那么又如何将接口中的内容打印出来?若代码有疑问,请帮忙指出?求教?
interface Person{
String name="lisi";
int age = 18;
public String say();
}
abstract class A implements Person
{
String name;
int age;
abstract String talk();
public String say()
{
return this.name+"-----"+this.name;
}
}
class Student extends A
{
Student(String name,int age){
this.name = name;
this.age = age;
}
public String talk()
{
return "学生----姓名"+this.name+",年龄:"+this.age;
}
}
class AbstractDemo{
public static void main(String[] args){
Student s = new Student("zahngsan", 13);
System.out.println(s.talk());
}
}
复制代码
作者:
黑马伍哲沂
时间:
2013-5-9 13:12
所有说明,我都添加在代码注释中了。应该比较清楚,你参考下。
interface Person
{
static final String name="lisi";//接口中的成员变量为常量,默认为这种声明方式。不写修饰符也是。
static int age = 18;
public String say();
}
abstract class A implements Person
{
// String name; //这里是重新声明了成员变量。不是接口中的。所以注释掉不要。
// int age;
abstract String talk();
public String say()
{
return this.name+"-----"+this.name;
}
}
class Student extends A
{
Student(){}//下面自定义了构造函数,所以需要手动添加缺失的默认构造函数。
// 下面代码为接口中变量赋值,因为接口中是final修饰,为常量。不可以赋值。编译错误。注释掉。
// Student(String name,int age)
// {
// this.name = name;
// this.age = age;
// }
public String talk()
{
return "学生----姓名"+this.name+",年龄:"+this.age;
}
}
//输出结果,是接口中的值。
class AbstractDemo
{
public static void main(String[] args)
{
Student s = new Student();//此处不可以赋值,原因同上。
System.out.println(s.talk());
}
}
复制代码
作者:
刘学明
时间:
2013-5-9 13:16
额 有人回答好了 顶!
作者:
飞鸟青崖
时间:
2013-5-9 13:25
interface Person{
String name="lisi";
int age = 18;
public String say();
}
abstract class A implements Person
{
String name;
int age;
abstract String talk();
}
class Student extends A
{
String name;
int age;
Student(String name,int age)
{
this.name = name;
this.age = age;
}
public String talk()//返回的是传入的值
{
return "学生----姓名"+this.name+",年龄:"+this.age;
}
public String say()
{
return Person.name+"-----"+Person.age;//此处改为接口名Person
}
}
class E1
{
public static void main(String[] args)
{
Student s = new Student("zhangsan",13);
System.out.println(s.talk());
System.out.println(s.say());
}
}
复制代码
抽象类中可以不覆盖接口中的方法,因为这个类本身便是抽象的,可以有抽象方法。
作者:
刘胜寒
时间:
2013-5-10 12:42
如果问题以解决,请及时修改分类。。谢谢合作
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2