黑马程序员——基础篇——接口和多态

------- <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学习型技术博客、期待与您交流!------------  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值