java学习笔记之抽象类,接口,多态

抽象函数,抽象类
特点:
1、抽象方法一定定义在抽象类中,都需要abstract修饰
2、抽象类不能实例化
3、只有子类覆盖了所有的抽象方法后,子类就可以创建对象;如果子类没有覆盖抽象方法,子类还是一个抽象类。就是强制让子类具备父类的方法
抽象类也是不断的向上抽取来的。抽取了方法的声明而不确定具体的方法内容,由不同的子类来确定方法的主体内容
------------------------------------------------------------------------------------------------------
抽象类中有构造函数吗--->有,抽象类构造函数虽然不能给抽象类对象实例化,因为抽象类不能创建对象。但是抽象类有子类,它的构造函数可以给子类的对象实例化
抽象类和一般类的区别:
   相同:都是用来描述事物,都可以进行属性和行为的描述
   不同:抽象类描述事物的信息不具体。一般类描述事物的信息具体
   代码的不同:抽象类中可以定义抽象方法,一般类不同;抽象类不可以实例化,一般类可以


抽象类一定是父类吗--->是的,由于抽象类不能实例化,只能依赖于子类覆盖其抽象方法后才能被实例化。


抽象类中可以不定义抽象方法吗--->可以的。仅是为了让该类不能创建对象


抽象关键字abstract和哪些关键字不能共存呢--->final(final修饰的类不能有子类;abstract修饰的类一定有子类,
报错:非法的修饰符组合),private(子类就不能直接访问,也就无法覆盖),static(静态方法会在方法区内加载,也就是不需要对象的存在,类名就可以调用该方法,但是抽象方法调用是没有意义的)
------------------------------------------------------------------------------------------------------
接口:抽象类的特殊情况--抽象类中所有的方法都是抽象的,就是接口
定义接口用关键字interface
interface Inter{
public abstract void show1();
public abstract void show1();
}

编译之后还是生成class文件。


接口中的成员和类的不同之处:
接口中常见的成员有两种:1、全局常量2、抽象方法;而且都有固定的修饰符。public abstract final都是默认的,可以不写。

public static final int num=1;


接口的特点:
1、接口不能实例化,有抽象方法
2、需要覆盖接口中所有抽象方法的子类才可以实例化。否则该子类还是一个抽象类
3、接口是用来被实现的,implements
------------------------------------------------------------------------------------------------------
接口解决了什么问题呢--->可以多实现,解决了多继承 调用不确定性的问题;避免了单继承的局限性,因为一个类可以继承一个类的同时,还可以实现多个接口。

继承是为了获取体系的基本功能,实现接口是为了扩展功能。


接口与接口之间的关系是继承的关系,子类实现的时候需要覆盖所有接口的方法,接口支持多继承


空实现--->没有抽象方法的抽象类,方便创建接口的对象

接口与抽象类的区别:
类是用于描述事物的共性的基本功能;接口是用于定义事物的额外功能
类与类之间是继承关系,is a
类与接口之间是实现关系,like a
抽象类中可以定义抽象和非抽象方法,子类可以直接使用,或者覆盖使用。想要避免,必须要进行判断,判断一个对象是否匹配某一类型,需要使用关键字instanceof:对象  instanceof 类型


接口中定义的都是抽象方法,必须实现才能用

多态在程序中的体现就是父类的引用或者接口的应用指向了子类的对象
多态的好处:提高了代码的扩展性
多态的弊端:不能使用子类的特有方法
多跳的前提
1、必须有关系,继承和实现
2、通常有覆盖

向上转型好处:隐藏了子类型,提高了扩展性
        弊端:只能使用父类的功能,不能使用子类特有的功能,功能被限定了。如果不需要面对子类型,通过提高扩展性,或者使用父类的功能即可完成操作,就可以使用向上转型。
向下转型的好处:可以使用子类型的特有功能
                    弊端:必须要面对具体的子类型。向下转型有风险,可能会出现类型转换异常。只要转换类型和对象不匹配就会发生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值