Java深层理解多态

多态

1)含义:

同一个动作作用于不同的对象产生不同的行为。eg:吃饭

2)优点:

降低了程序之间的耦合度
提高了程序的可扩展性

3)多态的类型:

----编译时多态:静态的,方法重载,(在编译时,调用相同的方法根据不同的形参区分)
----运行时多态:动态的,只有在运行期间才能确定使用的对象类型,(才能确定变量的引用是那个实例)

4)多态的必要条件

----继承:存在子类,父类继承关系
----重新:子类重新定义父类的方法(方法的覆盖)
----向上转型:父类的引用指向子类的实例 Person p = new Man();

5)多态的体现方式

----基于接口的体现方式
----基于继承的体现方式

6)对象的多态

----在编译时看等号左端,执行时看右边(编译时看父类,执行时调用子类方法)

7)==和equals方法的区别:

1)基本数据类型,==比较数值
2)引用数据类型,==比较地址
3)equals方法是Objet类的方法,他的底层实现是使用= =比较的
4)所有类都可以重写equals()方法,eg:String类中重写equals()是比较字符串的内容是否相同

8)多态的体现方式

1)基于继承的实现方式
----不同的子类重写父类的方法体现不同的形式
2)基于接口的实现方式
3.上转型和下转型
1)上转型:将子类对象交给父类引用,可以自动转化
2)下转型:强制类型转化

9)final关键字

1)所修饰的类不能被继承
2)所修饰的成员属性是常量,不能更改
----常量的命名规则,全部大写,如果多个单词组成,用下划线分开
----常量存储在方法区的常量池
3)所修饰的方法不能被重写

10)static关键字

1)修饰成员变量
----是一个类变量
----随着类的加载而产生,无论将来创建多少个对象,类变量只创建一次(保留一份)
----访问静态属性:类名.属性名
----所有的对象都可以共享静态的成员属性
----存储在方法区
----类变量(static修饰的变量):静态变量的生命周期–一直持续到整个"系统"关闭 (静态域)
2)修饰的成员方法
----是一个类方法
----访问静态方法:类名.方法名
----存储在方法区
----在静态方法里只能访问静态成员(如果访问非静态成员,只能通过实例化的对象访问)
----一般工具类中的方法都会声明为静态方法
3)静态的代码块
----语法格式:static { }
----随着类的加载而加载,只会执行一次
4)补充
实例变量的生命周期–当实例变量的引用丢失后,将被GC(垃圾回收器)列入可回收“名单”中,但并不是马上就释放堆中内存

11)可变参数

1)语法:数据类型…可变参数名称
2)可以接受任意个参数(0个或多个)
3)如果形参列表中既有普通的参数,也有可变参数,那么可变参数一定在最后声明

12)类型转化

1)基本数据类型转化
----自动类型转化:将容量小的数据类型转化为容量大的数据类型(相近的数据类型)
1B(byte,char)—>2B(short,boolean)—>4B(int,float)—>8B(long,double)
----强制类型转化:将容量大的数据类型转化为容量小的数据类型(相近的数据类型)
会导致精度丢失。
2)引用数据类型转化
----向上转型(自动类型转化):父类的对象指向子类的对象。Person p = new Man();
----向下转型:强制类型转化,Man man = (Man)p;
----如果两个类毫无关系,是不能进行转化。Man man = new Woman();//错误
----instanceof:用于比较类型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值