接口与抽象类
如果一个类中含有抽象方法那么这个类就是抽象类 abstract 只能用来修饰方法和类
接口是指一个方法的集合 接口中所有方法都没有方法体,在语言接口是通过interface来实现的。
接口和抽象类异同:
1》都不能被实现
2》接口的实现类和抽象类的子类都只有实现了接口的方法和 抽象类中的方法才能 被实现
a》接口只有被定义其方法不能在接口实现‘而抽象类可以有定义与实现
b》接口被实现,抽象类被继承
c》接口用于是实现比较常见的功能,抽象类更倾向于充当公共类
首先接口:
package com.www.testAbstract;
public interface D {
// 接口中的成员变量默认为public static final,静态的不能被修改的,且必须赋初值
public String name = "bird";
// 所有的 成员方法都是public abstract,只有定义,没有实现
public void fly();
public int egg();
}package com.www.testAbstract;
public class C implements D {
public String name = "a";
@Override
public void fly() {
System.out.println("bird can fly");
}
@Override
public int egg() {
if (name == "bird") {
return 2;
} else if (name == "a") {
return 4;
}
return 0;
}
public static void main(String[] args) {
D test = new C();
System.out.println(test.egg()); //输出为4
test.fly();//输出bird can fly
}
}package com.www.testAbstract;
public abstract class A {
String name = "aaa";
int age;
public void a() {
System.out.print("aa" + name);
}
public void b() {
System.out.print("bb");
}
public abstract void c();
}
package com.www.testAbstract;
public class B extends A {
String name = "bbb";
@Override
public void c() {
System.out.println("cccccc");
}
@Override
public void a() {
System.out.println("aaaaaaa" + " " + "name" + " " + name);
}
@Override
public void b() {
System.out.println("bbbbbbb");
}
public static void main(String[] args) {
A test = new B();
test.a();// aaaaaaa name bbb
test.b();// bbbbbbb
test.c();// cccccc
}
}