Java学习第20天
接口的成员特点:
(1) 成员变量:只能是常量。默认修饰符:public static final
(2)构造方法:接口没有构造方法,因为接口主要是对行为进行抽象,是没有具体存在,一个类如果没有父类,默认继承自Object类
(3)成员方法:只能是抽象方法,默认修饰符:public abstract;
接口示例:
package jicheng.com;
public interface Write {
void write();
}
package jicheng.com;
public abstract class Animal2 {
private int age;
private String
name;
public Animal2()
{
}
public Animal2(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age) {
this.age = age;
}
public String
getName() {
return name;
}
public void setName(String
name) {
this.name = name;
}
public abstract void eat();
public abstract void speak();
public void run(){
System.out.println("他能跑");
}
}
package jicheng.com;
public class Cat3 extends
Animal2 implements Write
{
@Override
public void eat()
{
System.out.println("猫吃鱼");
}
@Override
public void speak()
{
System.out.println("喵喵");
}
@Override
public void write()
{
System.out.println("猫能写字");
}
public Cat3()
{
}
public Cat3(int age, String name) {
super(age,
name);
}
}
package jicheng.com;
public class Demo5 {
public static void main(String[] args) {
System.out.println("-------------");
Write w=new Cat3();
w.write();
((Cat3) w).eat();
((Cat3) w).speak();
((Cat3) w).setAge(18);
((Cat3) w).setName("加菲");
System.out.println(((Cat3) w).getAge()+" "+((Cat3) w).getName());
w=new Cat3(19,"汤姆");
System.out.println(((Cat3) w).getAge()+" "+((Cat3) w).getName());
System.out.println("-------------");
Animal2 a=new Cat3();
a.setAge(18);
a.setName("加菲");
a.speak();
a.eat();
((Cat3) a).write();
System.out.println(a.getAge()+" "+a.getName());
a=new Cat3(19,"汤姆");
System.out.println(a.getAge()+" "+a.getName());
System.out.println("------------");
//最后一种方法最实用
Cat3 c=new Cat3(18,"加菲");
c.eat();
c.speak();
c.write();
System.out.println(c.getAge()+" "+c.getName());
}
}
类与接口的关系:
类和类的关系:继承关系,只能单继承,但可以多层继承
类和接口关系:实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。
接口和接口的关系:继承关系,可以单继承也可以多继承。