Java深层理解多态

多态

1)含义:

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

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)修饰成员变量
----是一个类变量
----随着类的加载而产生,无论将来创建多少个对象,类变量只创建一次(保留一份)
----访问静态属性:类名.属性名
----所有的对象都可以共享静态的成员属性
----存储在方法区
2)修饰的成员方法
----是一个类方法
----访问静态方法:类名.方法名
----存储在方法区
----在静态方法里只能访问静态成员(如果访问非静态成员,只能通过实例化的对象访问)
----一般工具类中的方法都会声明为静态方法
3)静态的代码块
----语法格式:static { }
----随着类的加载而加载,只会执行一次

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:用于比较类型

发布了15 篇原创文章 · 获赞 16 · 访问量 727

猜你喜欢

转载自blog.csdn.net/achu19/article/details/103978112