Java多态

一,多态的概念

java面向对象的三大特性之一:多态性。多态就是同一个行为具有多个不同表现形式或形态的能力,即“一个接口,多个方法”。

二,多态的好处

  1. 消除类型之间的耦合关系
  2. 可替换性
  3. 可扩充性
  4. 接口性
  5. 灵活性
  6. 简化性

三,多态存在的三个必要条件

继承
重写
父类引用指向子类对象

定义格式:父类类型 变量名=new 子类类型();
多态中成员的特点:多态成员变量:编译运行看左边
多态成员方法:编译看左边,运行看右边
代码分析:

父类

public class Father {
     
	
	 int  age = 40;
	 
	 public void show() {
     
		 System.out.println("我是爸爸");
	 }

}

子类

public class Son extends Father{
     
	
	int age = 18;
	
	@Override
	public void show() {
     
		System.out.println("我是儿子");
	}
	
	public void study() {
     
		System.out.println("我是儿子,我会学习");

	}

}

主方法:

public class Main {
     
	
	public static void main(String[] args) {
     
		Father father = new Son(); 
		System.out.println(father.age);
		father.show();
		
		
	}

}

运行结果

40
我是儿子

当父类引用指向子类对象时,你会发现输出的成员变量age是父类的值,而调用的方法是子类重写后的方法。
使用多态的时候要注意:如果我们在子类中编写一个独有的方法(没有继承父类的方法),此时就不能通过父类的引用创建的子类对象来调用该方法!!!
继承是多态的基础。

instanceof关键字

作用:用来判断某个对象是否属于某种数据类型。简单点来说是测试它左边的对象是否是它右边的类的实例
注意: 返回类型为布尔类型。

Father father = new Son(); 
Father father1 = new ZI();
if(father instanceof Son){
     
           System.out.println("father是Son的类型");
       }
      else{
     
          System.out.println("father是ZI的类型");
      }

输出

father是Son的类型

引用类型转换

了解了多态的含义后,我们在日常使用多态的特性时经常需要进行引用类型转换。
1.向上类型转换(隐式/自动类型转换),是小类型转换到大类型
使用格式:父类类型 变量名=new 子类类型();

2. 向下类型转换(强制类型转换),是大类型转换到小类型(有风险,可能出现数据溢出)
使用格式:子类类型 变量名=(子类类型) 父类类型的变量;

		Father father = new Son(); 
		System.out.println(father.age);
		father.show();
		Son son =(Son)father;
		System.out.println(son.age);
		son.show();
		

输出

40
我是儿子
18
我是儿子

你可能感兴趣的:(java,java,多态,编程语言)