接口
接口:初期可以认为是一个特殊的抽象类。当抽象类中的方法都是抽象的,那么该类可以通过接口的形式表示。
class :用于定义类。
interface :用于定义接口。
接口中的成员修饰符是固定的。
1,成员常量:public static final
2,成员函数:public abstract
接口中的成员都是public的。如果没有书写成员常量,成员函数的固定格式,只要是interface的类系统会默认添加。
接口是不可以创建对象的,因为有抽象方法。需要被子类实现,子类对接口中的方法全部都覆盖后,子类才可以实例化。否则子类是一个抽象类。
接口用implements来实现实例化。
接口的出现将“多继承”通过另一种形式体现出来,即“多实现”。一个类可以实现多个接口。
例子:
interface Inter
{
public abstract final int x = 3;
public static void show ();
}
interface Demo
{
public static void method ();
}
//多实现
class Test implements Inter,Demo
{
public static void show (){}
public static void method (){}
}
一个类在继承一个类的同时,还能实现多接口。
例子:
interface Inter
{
//成员变量
public abstract final int x = 3;
//成员方法
public static void show ();
}
interface Demo
{
//成员方法
public static void method ();
}
class Demo1
{
public void function(){}
}
class Test extends Demo1 implements Demo,Inter
{
public void test(){}
}
接口和接口直接存在多继承。
例子:
interface A
{
public static void method ();
}
interface B
{
public static void method1 ();
}
interface C extends B,A
{
public static void method (){}
public static void method1 (){}
public void method2(){}
}
interface D extends C
{
public static void method (){}
public static void method1 (){}
public void method2(){}
public void method2(){}
}
类和类是继承的关系,类和接口是实现关系,接口和接口之间也是继承关系。
接口的特点:
1,接口是对外暴露的规则。
2,接口是程序的功能扩展。
3,接口可以用来多实现。
4,类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。
5,接口与接口之间可以有继承关系。
多态
多态:事物存在的多种体现形态。
1,多态的基本体现
父类或者接口的引用指向或者接收自己的子类对象。
2,多态的前提
(1)类和类需要存在关系,继承或者实现关系。
(2)要有覆盖操作。
3,多态的好处
多态的存在提高了程序的扩展性和后期可维护性
4,多态的弊端
只能使用父类的引用访问父类中的成员。
5,多态的应用
强制将父类的引用,转换成子类类型。向下转型。
不可以将父类对象转换成子类类型。能转换的是父类应用指向了自己的子类对象时,该应用可以被提升,也可以被强制转换。多态自始至终都是子类对象在变化。
判断引用数据类型的关键字:
instanceof
class Fu
{
void method1()
{
System.out.println("fu method_1");
}
void method2()
{
System.out.println("fu mehtod_2");
}
class Zi extends Fu
{
void method1()
{
System.out.println("zi method_1");
}
void method3()
{
System.out.println("zi method_3");
}
}
public static void main(String[] args)
{
//Fu是引用型变量,Zi是对象所属
Fu f = new Zi();
f.method1();
f.method2();
//Fu类引用中没有method3的方法。
f.method3();
}
} 结果:编译不通过
多态(父类引用指向子类对象)的特点:
(非静态)成员函数的特点:
在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有编译通过,如果没有编译失败。
在运行时期:参阅对象所属的类中是否有调用的成员。
简单一句话:成员函数在多态调用时,编译看左边,运行看右边。
(非静态)成员变量的特点:
无论在编译的时还是在运行的时候,都参考引用型变量所属的类。(也就是等号左边)的类)
在多态中,静态成员函数的特点:
无论编译还是运行,都参考“引用型”变量所属的类中的方法(等号左边)。因为是静态的所以直接进内存中。不需要对象的调用。可以直接用类名使用。
静态成员变量也是一样。无论编译还是运行,都参考“引用型”变量所属的类中的方法(等号左边)。
Object类
Object:是所有对象的直接或者间接父类。该类中定义的肯定是所有对象都具备的功能。
equals(Object obj)指示其他某个对象是否于此对象"相等".
Object类中已经提供了对对象是否相同的比较方法。如果自定义类中也有比较相同的功能,没有必要重新定义。只要沿袭父类中的功能,建立自己特有比较内容即可。这就是覆盖。