Java学习Day9-多态,抽象,接口的理解

 

1.final

定义:最终修饰符,无法修改,可以修饰方法,变量,类

 

特点:

 

 

修饰 类:不能被继承

修饰方法:不能被重写    

修饰变量:为常量

 

 

局部变量:

 引用类型:地址值不能改变,对象的内容可以发生改变

基本类型的值不能改变

 

初始化:

只能初始化一次

 

2.多态

(1)同一个对象在不同时刻体现出来的不同状态。
 (2)多态的前提:
  A:有继承或者实现关系。
  B:有方法重写。
  C:有父类或者父接口引用指向子类对象。
  
  多态的分类:
   a:具体类多态
    class Fu {}
    class Zi extends Fu {}
    
    Fu f = new Zi();
   b:抽象类多态
    abstract class Fu {}
    class Zi extends Fu {}
    
    Fu f = new Zi();
   c:接口多态
    interface Fu {}
    class Zi implements Fu {}
    
    Fu f = new Zi();

 

(3)多态中的成员访问特点
  A:成员变量
   编译看左边,运行看左边
  B:构造方法
   子类的构造都会默认访问父类构造
  C:成员方法
   编译看左边,运行看右边
  D:静态方法
   编译看左边,运行看左边

(4)多态的好处:
  A:提高代码的维护性(继承体现)
  B:提高代码的扩展性(多态体现)
 (5)多态的弊端:
  父不能使用子的特有功能。
  
  现象:
   子可以当作父使用,父不能当作子使用。
 (6)多态中的转型
  A:向上转型
   从子到父
  B:向下转型
   从父到子  Fu f= new zi()   zi z =(zi)f f.method()

多态的内存图解

多态在对象中的变化

3.抽象类

(1)把多个共性的东西提取到一个类中,这是继承的做法。
    但是呢,这多个共性的东西,在有些时候,方法声明一样,但是方法体。
    也就是说,方法声明一样,但是每个具体的对象在具体实现的时候内容不一样。
    所以,我们在定义这些共性的方法的时候,就不能给出具体的方法体。
    而一个没有具体的方法体的方法是抽象的方法。
    在一个类中如果有抽象方法,该类必须定义为抽象类。
 (2)抽象类的特点
  A:抽象类和抽象方法必须用关键字abstract修饰
  B:抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
  C:抽象类不能实例化
  D:抽象类的子类
   a:是一个抽象类。
   b:是一个具体类。这个类必须重写抽象类中的所有抽象方法。
 (3)抽象类的成员特点:
  A:成员变量
   有变量,有常量
  B:构造方法
   有构造方法
  C:成员方法
   有抽象,有非抽象

A:抽象类有构造方法,不能实例化,那么构造方法有什么用?
   用于子类访问父类数据的初始化
  B:一个类如果没有抽象方法,却定义为了抽象类,有什么用?
   为了不让创建对象

C:abstract不能和哪些关键字共存
   a:final 冲突
   b:private 冲突
   c:static 无意义

4.接口

(1)回顾猫狗案例,它们仅仅提供一些基本功能。
    比如:猫钻火圈,狗跳高等功能,不是动物本身就具备的,
    是在后面的培养中训练出来的,这种额外的功能,java提供了接口表示。
 (2)接口的特点:
  A:接口用关键字interface修饰
   interface 接口名 {}
  B:类实现接口用implements修饰
   class 类名 implements 接口名 {}
  C:接口不能实例化
  D:接口的实现类
   a:是一个抽象类。
   b:是一个具体类,这个类必须重写接口中的所有抽象方法。
 (3)接口的成员特点:
  A:成员变量
   只能是常量
   默认修饰符:public static final
  B:构造方法
   没有构造方法
  C:成员方法
   只能是抽象的
   默认修饰符:public abstract
 (4)类与类,类与接口,接口与接口
  A:类与类
   继承关系,只能单继承,可以多层继承
  B:类与接口
   实现关系,可以单实现,也可以多实现。
   还可以在继承一个类的同时,实现多个接口
  C:接口与接口
   继承关系,可以单继承,也可以多继承

5.抽象类和接口的区别
A:成员区别
    抽象类:
        成员变量:可以变量,也可以常量
        构造方法:有
        成员方法:可以抽象,也可以非抽象
    接口:
        成员变量:只可以常量
        成员方法:只可以抽象
        
B:关系区别
    类与类
        继承,单继承
    类与接口
        实现,单实现,多实现
    接口与接口
        继承,单继承,多继承
        
C:设计理念区别
    抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。
    接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值