------- <a target="blank">android培训</a>、<a target="blank">java培训</a>、期待与您交流! ----------
1、接口:初期理解,可以认为是一个特殊的抽象类,当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。
class用于定义类;
interface用于定义接口;
2、接口定义是,格式特点:
1)、接口中常见定义,抽象方法。
2)、接口中的成员都有固定的修饰:
常量:public static final;
方法:public abstract.
3、记住接口中的成员都是public 。
interface Inter
{
int Num = 3; //这样表示也可以,因为格式固定,少了什么,程序会自动不上,但是通常应该全写。
void show() ;
}
4、接口是不可以创建对象的,因为有抽象方法。需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化,否则子类是一个抽象类。接口可以被类多实现,也是对多继承不支持的转换形式,这样可以说Java支持多实现。
为什么说它本不可以多实现,因为继承两个类中的相同方法体,但对接口来说都是抽象的,没有内容,所以没关系。
class Demo
{
}
interface Inter
{
}
class InterFaceDemo extends Demo implements Inter
{
}
写内容为实现,不写内容为继承
类与类之间用继承;
接口与接口之间用继承;
类与接口之间用实现。
多态:可以理解为事物存在的多种体现形态。
1、多态的基本体现,前提、好处、应用
体现:父类的引用指向了自己的子类对象,父类的引用也可以接受自己的子类对象。
好处:多态的出现大大提高了扩展性。
前提:必须是类与类之间有关系,要么继承,要么实现,通常还有一个前提,存在覆盖。
弊端:提高了扩展性,但是只能使用父类的引用访问父类中的成员。
Animal a = new Cat(); //类型提升,向上转型;
如果想要调用子类的特有方法时,需强制将父类的引用转换成子类类型,向下转型。
Animal a = new Animal();//如果父类不为抽象。
Cat c = (Cat) a;
千万不要出现这样的操作,就是将父类对象转成子类类型,我们能转换的是父类应用指向了自己的子类对象时,该应用可以被提升,也可以被强制转换。
多态自始至终都是子类对象在做变化。
可以使用instanceof 来判断两个类是否为同一类。
/*
多态和接口应用程序练习。
*/
//创建接口
interface PCI
{
public void open();
public void close();
}
//创建主板
class MainBoard
{
public void run()
{
System.out.println("mainboard run");
}
public void usePCI(PCI p)
{
if(p != null)
{
p.open();
p.close();
}
}
}
//声卡实现PCI接口
class SoundBoard implements PCI
{
public void open()
{
System.out.println("soundboard open");
}
public void close()
{
System.out.println("Soundboard close");
}
}
class DuotaiDemo
{
//主函数
public static void main(String[] args)
{
MainBoard mb = new MainBoard();
mb.run();
mb.usePCI(null);
mb.usePCI(new SoundBoard());
}
}
2、在多态中非静态成员函数的特点:
在编译时期,参阅引用类型变量所属的类中是否有调用的方法,如果有,编译通过,如果没有编译失败,在运行时期,参阅对象所属的类中是否有调用的方法。
简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。
3、在多态中静态成员变量的特点
无论编译和运行,都参考左边引用型变量所属的类。
----------android培训、java培训、java学习型技术博客、期待与您交流!------------