java基础总结——Java继承和多态讲解
Java类的封装
===================================================================================
Java继承(extends)
===================================================================
Java super关键字详解
=============================================================
Java对象类型转换:向上转型和向下转型
初学者在学习向上转型可能会很难理解,向上转型并不能调用子类特有属性和方法,
我们必须先生成子类实例再赋值给父类引用(向上转型),然后将父类引用向下强制转换给子类引用(向下转型),这样才能调用子类中的所有成员。这看起来像是多次一举,还不如直接创建子类实例。
class Animal { public void move() { System.out.println("动物可以移动"); } public void name() { System.out.println("动物"); } } class Dog extends Animal { public void move() { System.out.println("狗可以跑和走"); } public void bark() { System.out.println("狗可以叫"); super.move(); } } public class TestDog { public static void main(String args[]) { Animal b = new Dog(); b.name(); b.move(); // b.bark(); System.out.println("------------------------------"); Dog d = new Dog(); d.name(); d.move(); d.bark(); System.out.println("------------------------------"); Animal as = new Dog(); Dog d2 = (Dog)as; d2.name(); d2.move(); d2.bark(); System.out.println("------------------------------"); as.name(); as.move(); ((Dog) as).bark(); } }
执行结果:
动物
狗可以跑和走
------------------------------
动物
狗可以跑和走
狗可以叫
动物可以移动
------------------------------
动物
狗可以跑和走
狗可以叫
动物可以移动
------------------------------
动物
狗可以跑和走
狗可以叫
动物可以移动
------------------------------------------------------------------------------------
向上转,不能调用子类中特有的方法;
为了调用子类中特有的方法,需要再new一个对象,这样就显得多此一举。浪费。
我们可以向下转。
通过向下转型,解决了多态的弊端:不能访问子类中的特有方法。
===================================================================================
Java方法重载
===========================================================================
Java方法重写
=========================================================================================
Java多态性:Java什么是多态?
多态性是面向对象编程的又一个重要特征,它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义。
对面向对象来说,多态分为编译时多态和运行时多态。
其中编译时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的方法。
通过编译之后会变成两个不同的方法,在运行时谈不上多态。
而运行时多态是动态的,它是通过动态绑定来实现的,也就是大家通常所说的多态性。
Java 实现多态有 3 个必要条件:继承、重写和向上转型。只有满足这 3 个条件,开发人员才能够在同一个继承结构中使用统一的逻辑实现代码处理不同的对象,从而执行不同的行为。
- 继承:在多态中必须存在有继承关系的子类和父类。
- 重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
- 向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才既能可以调用父类的方法,又能调用子类的方法。
==========================================================================
Java抽象(abstract)类
==========================================================================================
Java接口(Interface)的定义和实现