多态:

子类重写父类方法
 1)位置:子类和父类中有同名的方法
 2)方法名相同,返回类型和修饰符相同,参数列表相同
       方法体不同

多态的优势和应用场合
 多态:同一个引用类型,使用不同的实例而执行不同的操作

方法重载也是多态的一种体现.
人的不同肤色不是多态
多态的终极目标:
为了实现统一调用。
多态的两种方式:
多态一:
 父类普通类  方法a()

子类普通继承父类 方法a()

多态二:
父类的抽象类 方法是抽象方法a()

子类普通实现 抽象类 重写了抽象方法a()

instanceof 用来判断一个对象是否属于一个类或者实现了一个接口
简单工厂:
通过工厂类 创建子类对象 保存到父类的类型中

   ■多态可以减少类中代码量
   ·可以提高代码的可扩展性和可维护性
   ■向上转型一子类转换为父类,
   ·自动进行类型转换
   ■向下转型一父类转换为子类,
   ·结合instanceof运算符进行强制类型转换

例子:

父类:Pet
package cn.javaoppDay01; public abstract class Pet {
public String name;
public int health=;
public int love=;
public Pet(String name) {
super();
this.name = name;
}
public void print(){
System.out.println("我的名字是"+this.name+"健康值"+this.health+"亲密度"+this.love);
}
public abstract void eat();
}
package cn.javaoppDay01;

狗狗类:Dog
public class Dog extends Pet { public Dog(String name) {
super(name);
// TODO Auto-generated constructor stub
}
@Override
public void eat() { }
public void catchingFlyDisc(){
System.out.println("狗狗"+super.name+"正在接飞盘");
super.health =super.health-;
super.love =super.love+;
System.out.println("狗狗的健康值为:"+this.health+",亲密值为:"+this.love); } }
package cn.javaoppDay01;

public class Penguin extends Pet{
企鹅类:Penguin
public Penguin(String name) {
super(name);
// TODO Auto-generated constructor stub
}
@Override
public void eat() { }
public void swimming(){
System.out.println("企鹅"+super.name+"正在游泳");
super.health =super.health-;
super.love =super.love+;
System.out.println("企鹅的健康值为:"+this.health+",亲密值为:"+this.love); } }
测试类:
package cn.javaoppDay01; public class Test { public static void main(String[] args) {
// TODO Auto-generated method stub Dog dog=new Dog("啊啊");
dog.catchingFlyDisc();
Penguin penguin=new Penguin("哈哈");
penguin.swimming();
} }

instanceof运算符的使用

 作用:用来判断一个对象是否属于一个类或者实现一个接口

 类型转换比较
     1.
   子类转换父类
   向上转型
   自动转换
     2.
   父类转换子类
   向下转型
   使用isntanceof用作比较判定
   子类 对象名 = (子类)父类;
   使用子类对象

例子:

父类:
/**
*父类 宠物类
*/
public class Pet {
public void eat(){
System.out.println("pet正在吃");
}
}
Cat:猫类
public class Cat extends Pet {
public void eat(){
System.out.println("猫吃猫粮");
} public void ball(){
System.out.println("猫玩球");
}
}
子类:
狗狗类 :
/**
*子类:狗狗类
*/
public class Dog extends Pet{
public void eat(){
System.out.println("狗狗吃狗粮");
} public void catchFlyDisk(){
System.out.println("狗狗玩飞盘");
}
}
子类:
企鹅类:
/** *企鹅类
*/
public class Penguin extends Pet{
public void eat(){
System.out.println("企鹅吃鱼");
} public void swiming(){
System.out.println("企鹅游泳");
}
主人类
/**
*主人类
*/
public class Master { public void feed(Pet pet){
pet.eat();
} //领养宠物 多态形式3:父类作为方法返回值,子类实例化 类型自动转换
public Pet getPet(int typeid){
Pet pet=null;
if(typeid==){
pet=new Dog();
}
else if(typeid==){
pet=new Penguin();
}
else if(typeid==)
{
pet=new Cat();
}
return pet;
}
//主人和宠物玩耍的行为
public void play(Pet pet){
if (pet instanceof Dog) {
Dog dog=(Dog)pet;//向下转型
dog.catchFlyDisk();
}else if(pet instanceof Penguin){
Penguin peng=(Penguin)pet;
peng.swiming();
}else if(pet instanceof Cat){
Cat cat=(Cat)pet;
cat.ball();
} } }
测试类:
public class Test { /**
*
*/
public static void main(String[] args) {
//多态的形式1
Dog dog=new Dog(); Penguin peng=new Penguin(); Cat cat=new Cat();
Master ms=new Master();
ms.feed(dog);
ms.feed(peng);
ms.feed(cat); //多态的形式2:父类做类型,子类实例化
Pet pet=new Dog();//自动转换
pet.eat(); //调用领养宠物 形式3:父类作为方法的返回类型
System.out.println("请选择您要领养的宠物:(1-狗狗 2-企鹅 3-猫) ");
Scanner input=new Scanner(System.in);
int xz=input.nextInt();
Master dx=new Master();
Pet pets=dx.getPet(xz);
pets.eat(); dx.play(dog); } }

Java面向对象的三大特性之一 多态的更多相关文章

  1. Java学习笔记二十五:Java面向对象的三大特性之多态

    Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...

  2. 3.java面向对象编程三大特性之多态

    面向对象编程的三大特性:封装.继承.多态 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对类的外部而言它的内部实现细节是隐藏的,暴露给外界的只是它的实现方法. ...

  3. Java基础-面向对象第三大特性之多态(polymorphism )

    Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...

  4. 谈谈Java面向对象的三大特性

    Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...

  5. Java学习笔记十八:Java面向对象的三大特性之封装

    Java面向对象的三大特性之封装 一:面向对象的三大特性: 封装 继承 多态   二:封装的概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访 ...

  6. Java学习笔记二十一:Java面向对象的三大特性之继承

    Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...

  7. java面向对象的三大特性

    1.面向对象的三大特性 继承.封装.多态 什么是继承? ①继承是面向对象程序设计能够提高软件开发效率的重要原因之一. ②继承是具有传递性的,就像现实中孙子不仅长得像爸爸而且还像他爷爷. ③继承来的属性 ...

  8. Java 面向对象的三大特性之一 继承

    继承: Java是继承的三大特性之一,是Java中实现代码重用的手段之一 将重复的代码抽取到父类中继承的有点或者现实 优点: 方便修改代码 减少代码量 Java中继承的语法: 修饰符 SubClass ...

  9. java面向对象的三大特性——多态

    多态 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底 ...

随机推荐

  1. log4j动态监听配置修改

    一般情况下,log4j的配置文件是log4j.properties.但是每次我们修改了配置文件之后程序并不会自动去加载,而需要我们去重启程序.那么怎么样才能让程序不用重启就监听到变化呢.代码如下: p ...

  2. 在shell终端操作oracle数据库的常用命令

    这里面是在一个项目中用到的操作oracle数据库的常用linux命令,因为当时无法用plsql远程连接,大部分操作都需要在命令行窗口进行,总结一下 第一种方式 (1)先切换至sqlplus [orac ...

  3. (转)c# control.Invoke control.BeginInvoke

    在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate. 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是do ...

  4. Docker入门(CentOS7)

    1.docker安装yum -y install bash-completion     #tab键补齐包yum install net-tools -yyum -y install wgetwget ...

  5. Hadoop-2.3.0的Eclipse插件编译

    Hadoop-2.3.0的Eclipse插件编译 #cd /usr/local/src/hadoop2x-eclipse-plugin-master/src/contrib/eclipse-plugi ...

  6. CentOS7 安装redis4:

      phpredis-4.0.12.tar.gz:下载:wget http://download.redis.io/releases/redis-4.0.12.tar.gz   $ tar -zxvf ...

  7. javaee登录界面

    首先在此之前我们应该正确安装数据库,以及eclipse(javaee)文件包. 1.首先在javaee中建立新的项目 2.右键点击WebContent-New-JSP File,新建jsp(动态)文件 ...

  8. HDU-2586-裸LCA入门-tarjan离线

    http://acm.hdu.edu.cn/showproblem.php?pid=2586 给出一颗树和边权,询问两点距离. 考虑tarjan离线做法,做法很巧妙,当前进行到u,对他的儿子v,当v子 ...

  9. 搭建RESTful API 之 实现WSGI服务的URL映射

    javarestfull 搭建参考 http://blog.csdn.net/hejias/article/details/47424511 问题引出:对于一个稍具规模的网站来说,实现的功能不可能通过 ...

  10. AWS EC2 MySQL迁移到RDS案例

    Amazon Relational Database Service (Amazon RDS) 是一种Web 服务,可让用户更轻松地在云中设置.操作和扩展关系数据库.它可以为行业标准关系数据库提供经济 ...