黑马程序员-面向对象-多态

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------


一多态的前提:(1)要有继承关系(或者实现关系)
           (2)方法的重写
		   (3)父类的引用指向了自己子类的对象

class Fu
{
	public void show()
	{
		System.out.println("fu show");
	}
}

class Zi extends Fu
{
	public void show()
	{
		System.out.println("zi show");
	}
}

class Day02
{
	public static void main(String[] args)
	{
		Fu f = new Zi();
		f.show();
	}
}

二多态间编译成员的特点:
                (1)成员变量:编译看左边,运行看左边
				(2)成员函数:编译看左边,运行看右边
class Fu
{
	public int num = 10;
	public void show()
	{

		System.out.println("fu show");
	}
}

class Zi extends Fu
{
	public int num = 20;
	public void show()
	{
		System.out.println("zi show");
	}
}

class Day02
{
	public static void main(String[] args)
	{
		Fu f = new Zi();
		//编译看左边(fu中的show方法)
		//运行看右边(zi中的show方法)
		f.show();

		//编译和运行都看左边的(fu中的num)
         System.out.println(f.num);
	}
}

三.多态中的向上转型和向下转型
(1)向上转型:小转大
(2)向下转型:大转小
   向下转型是为了用到子类里的特有方法

   注解:建立子类对象,调用子类的特有方法也可以,但是如果这样做
        内存中就有了两个子类的对象,效率低,不利于节省内存空间

class Fu
{
	public void show()
	{
		System.out.println("fu show");
	}
}

class Zi extends Fu
{
	public void show()
	{
		System.out.println("zi show");
	}
	public void method()
	{
		System.out.println("zi method");
	}
}

class Day02
{
	public static void main(String[] args)
	{
		Fu f = new Zi();//向上转型
		f.show();//zi show
		Zi z = (Zi)f;//向下转型
		z.method();
	}
}

四.多态的定义&弊端&好处
定义:对象在不同时刻表现出来的不同状态
弊端:父类的引用不能使用子类的特有功能
好处:提高了代码的扩展性和可维护性

黑马程序员-面向对象-多态

时间: 2024-10-09 13:25:05

黑马程序员-面向对象-多态的相关文章

黑马程序员 面向对象(上) 封住,继承,多态,以及this和super的用法

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ----------------------/* * 一.类的继承: 当多个类出现了相同的属性和行为时,我们可以把这些类中相同的属性和行为抽取出来 成为独立的一个类,然后让这些类分别去继承抽取类,再根据自己需求去实现别的功能 这样大大的增强的相同代码的复用性,也使代码变得美观 我们把这个抽取类叫做这些类的父类,这些类叫做抽取类的子类,子类是可以继承父类中 的所有信息. 在Java中所有的类

黑马程序员——面向对象编程三大特性

黑马程序员——面向对象编程三大特性 ------- android培训.IOS培训.期待与您交流! ---------- 面向对象编程三大特性:封装,继承,多态,(抽象) ***封装的概念与原理*** 封装是面向对象的特性之一 封装的好处:降低数据被无用的可能性,保证数据安全性 不封装的缺点:会把自己的属性暴露给外部,失去对该属性的管理权 封装原理:实例变量默认只能被当前类的对象方法访问 **封装实现** 定义设置实例变量(setter)方法和访问实例变量(getter)方法 1)setter(

黑马程序员-面向对象的特征

Java面向对象 面向对象是一种程序设计方法,或者是程序设计规范,其基本思想是使用对象.类.继承.封装.多态等基本概念来进行程序设计. 面向对象是一种符合人们思考习惯的思想,可以将复杂的事情简单化,将程序员从执行者转换成了指挥者 完成需求时: ? 先要去找具有所需的功能的对象来用. ? 如果该对象不存在,那么创建一个具有所需功能的对象. ? 这样简化开发并提高代码的复用. 面向对象的开发过程其实就是不断的创建对象,使用对象,指挥对象做事情.设计的过程其实就是在管理和维护对象之间的关系. 面向对象

黑马程序员-面向对象-Object类

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>.<a href="http://edu.csdn.net"target="blank">.Net培训</a>.期待与您交流! ---------------------- 一.Object类中的equals(

黑马程序猿-面向对象-多态

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>.<a href="http://edu.csdn.net"target="blank">.Net培训</a>.期待与您交流! ---------------------- 一多态的前提:(1)要有继承关系(或

黑马程序员——面向对象(一)概述、类与对象、继承、抽象类、接口、多态、内部类

一.面向对象概述 1.面向对象:是一个很抽象的概念,它相对面向过程而言,是一种程序设计的思想. 2.面向对象的特点: * 符合人们思考习惯的思想 * 可以将复杂的事情简单化 * 将程序员从执行者转换成了指挥者 * 完成需求时:只需要寻找具备所需功能的对象或者创建所需功能的对象即可,简化开发效率并提高对象的复用性. 3.面向对象的三个特征:封装(Encapsulation).继承(Inheritance).多态(Polymorphism). 二.类与对象 (一)类与对象之间的关系 1.类的定义:类

黑马程序员——面向对象

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 本文是对java面向对象概念的总结和回顾.面向对象是java语言的一个重要特点,只有真正理解了面向对象的基本概念,并应用面向对象的概念编写java程序,才算是真正的java程序员. 一.面向对象的概念 面向对象是相对面向过程而言,面向对

黑马程序员——面向对象(static静态应用)-第13天

----------- android培训.java培训.java学习型技术博客.期待与您交流! ------------ 面向对象(static静态应用) 1.面向对象(static静态什么时候使用) 静态什么时候使用 要从两方面下手: 它修饰的内容有成员变量和函数. 什么时候定义静态变量? 当对象出现共享数据时(共享值,name是共享变量,country中"CN"是值,数据),该数据被静态修饰. 对象中的特有数据要定义成非静态,存在堆内存中. 什么时候定义静态函数? 当功能内部没有

黑马程序员--面向对象的三大特性-我之见解

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- ------封装------- 1.什么是封装: 封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式 2.封装的好处: 将变化隔离.(不管里面怎么变,使用者不需要知道) 便于使用.(使用者只需按照一定的方法使用就可以了) 提高重用性