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
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
}
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
}
@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());
}
}
類與介面的關係:
類和類的關係:繼承關係,只能單繼承,但可以多層繼承
類和介面關係:實現關係,可以單實現,也可以多實現,還可以在繼承一個類的同時實現多個介面。
介面和介面的關係:繼承關係,可以單繼承也可以多繼承。