接口:用interface关键字定义
接口中成员的特点:1.接口中可以定义常量和抽象方法,接口中的成员都有固定的修饰符,
常量:public static final
方法:public abstract
这些修饰符是默认添加的,不写也是可以的。
接口子类的特点:接口是不能创建对象的,因为接口当中有抽象方法,这些方法需要被子类全部重写,子类才可以创建对象,如果子类只重写了接口中的
一部分方法或没有重写,那么子类就是一个抽象类。
Java不支持多重继承的原因:因为父类中可能存在同名方法,而这些方法可能都有方法体,这样当子类调用父类方法时就会出现胡乱,而实现多个接口是 可以的,因为接口中的方法都没有方法体,需要子类去重新这些方法,如果出现重名现在那么子类只需要重写一次就可以了 ,而当中的内容只有一份,不会出现混淆。
接口和继承类的应用原则:应用某个体系中的功能时用继承,对某个类进行功能扩展时用接口。
多态是Java的又一大特性,多态思想让java编程非常有趣。
多态的体现形式:父类引用指向子类对象
多态的好处:大大提高了程序的扩展性
实现多态的前提:类与类之间要存在关系,或者是继承或者是实现接口
interface A{
}
class B{
}
class C implements A{
}
class D extends B{
}
public class HelloWorld {
public static void main(String []args){
A a = new C();
B b = new D();
}
}
多态的弊端:只能用父类引用访问父类成员,如果子类中增加了一些成员时,用多态的访问不到的。
interface A{
void method1();
}
class B{
}
class C implements A{
public void method1(){
System.out.println("C method1");
}
public void method2(){ //子类特有的方法
System.out.println("C method2");
}
}
class D extends B{
}
public class HelloWorld {
public static void main(String []args){
A a = new C();
B b = new D();
a.method2(); //编译错误
}
}
多态中成员函数的特点:在编译期间参考父类引用,而在运行期间参考子类对象。
多态中成员变量的特点:不论是静态还是非静态的成员变量,都参考父类的引用
interface A{
int x = 9;
void method1();
}
class B{
static int y = 8;
}
class C implements A{
int x = 4;
public void method1(){
System.out.println("C method1");
}
public void method2(){
System.out.println("C method2");
}
}
class D extends B{
static int y = 2;
}
public class HelloWorld {
public static void main(String []args){
A a = new C();
B b = new D();
System.out.println("a.x = " + a.x + ", b.y = " + b.y);
}
}
输出结果:a.x = 9, b.y = 8
<---------------------------------新手学习,有错误请大家指出--------------------------------->