javaSE_day7_this关键字_____继承____抽象方法____接口____多态

1.this关键字

解决成员变量和局部变量同名问题

在成员变量前面加上this,来区分成员变量和局部变量   //例:this.name

this可以在构造方法之间进行调用,语法this()

2.继承:子类继承父类,也就继承父类的属性和方法

子类 extends  父类

3.抽象方法

没有方法体,必须用abstract修饰的方法

例: public abstract void work();

注意:抽象方法必须在抽象类中

          抽象类不能实例化对象,也就是不能new

4.抽象类的使用

定义子类继承抽象类,将抽象方法进行重写,创建子类对象

5.抽象类的特点

抽象类和抽象方法都需要被abstract修饰,抽象方法一定放在抽象类中

抽象类不可以直接创建对象。原因是:调用抽象方法没有意义(抽象方法没有方法体)

只有覆盖了抽象类中的所有的抽象方法后,其子类才可以创建对象,否则子类还是一个抽象类

abstract不可以和哪些关键字一起使用:private   final   static

6.接口

接口是功能的集合,是一种引用数据类型,比抽象类更为抽象的类(因为抽象类中可以有普通方法和抽象方法,而接口中只能有抽象方法,不能有带方法体的普通方法)

接口只描述应该具备的方法,并没有具体实现,具体的实现由接口的实现类来实现

接口的实现类必须实现接口的全部方法,否则必须定义为抽象类。

接口的定义:public interface 接口名{

                            抽象方法1;  //固定格式:public abstract  返回值类型  方法名(参数列表);例:public abstract void work(); 

                                                                              //public abstract可以不写,但写不写都有,也可以选择性书写

                             抽象方法2;

                             抽象方法3;

                      }

接口中的成员变量的定义:要求成员变量必须是常量(也就是不可修改的)

接口中的成员变量的固定格式:public static final 数据类型 变量名=值; //前面的public static final可以省略不写,但但写不写都有

类与接口的关系:类实现接口   使用关键字implements

                           class 类  implements 接口{

                                  重写接口中的抽象方法

                              }

 

类和类之间可以通过继承(extends)产生关系(类和类之间只能单继承)

类和接口之间可以通过实现(implements)产生关系(类和接口之间可以多实现)

接口和接口之间可以通过继承(extends)产生关系(接口和接口之间可以多继承,如果多继承,类中就要重写所有接口中的方法)

 

抽象类中的所有抽象方法和接口里的所有方法必须被子类重写吗?

不一定,关键要看子类是否是抽象类。
   如果子类是非抽象类,则必须实现接口中的所有方法;  
   如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在

 

接口的多实现:

interface A                interfaceB

class C implements A,B;

作为实现类C,必须全部重写两个接口的所有抽象方法,才能建立C类的对象

接口和抽象类的相同点和区别:

相同点:都位于继承的顶端,用于被其他类实现或继承

               都不能直接实例化对象

              包含抽象方法,子类必须重写这些抽象方法

区别:抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性

           接口只能包含抽象方法

            一个类只能继承一个父类(可能是抽象类),却可以实现多个接口(接口弥补了java中的单继承)

多态:

多态调用的3种形式:

普通类: 父类  变量名=new 子类();

抽象类:抽象类   变量名=new  抽象类子类();

接口:接口   变量名=new  接口实现类();

多态中成员变量和成员方法的的特点:

成员变量:编译运行全看父类(父类要是没有就报错)

成员方法:如果是静态方法:编译看父类,运行父类中的静态方法

                  如果是非静态方法:编译看父类,运行子类中的重写方法

多态中关键字instanceof的使用:

Person  p=new Student();

p  instanceof  Student    比较p是不是Student类型的对象,如果是,返回true

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值