多态(重点:方法的多态性和对象的多态性)

父类引用变量强制转子类,子类的方法可以调用了
class A{
    public void say(){
        System.out.println("类A进行say");
    }
}

class B extends A{
    @Override
    public void say(){
        System.out.println("子类B进行say");
    }
    public void say1(){
        System.out.println("子类B进行say1");
    }
}

class C extends A{
    @Override
    public void say(){
        System.out.println("子类C进行say");
    }
    public void say1(){
        System.out.println("子类C进行say1");
    }
}

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        A a1 = new B();//向上转型
        A a2 = new C();
        a1.say();// 子类B进行say
        a2.say();// 子类C进行say
        //a对象会遗失和父类不同的方法,a点不出来say1()这个方法
        B b1 = (B)a1;
        b1.say1();//子类B进行say1
        b1.say(); //子类B进行say
    }

}

/*向上塑性的好处是,增加extensible,
增加一个实现类c,照样可以用A的引用变量.say()*/

—————————————————————————————————————————————————
接口类型强制转换成实现类类型
interface A{
    public void say();
}

class B implements A{
    @Override
    public void say(){
        System.out.println("子类B进行say");
    }
    public void say1(){
        System.out.println("子类B进行say1");
    }
}

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        A a = new B();
        a.say();//子类B进行say,点不出say1()
        B b =(B)a; //这里必须进行强制转换;接口类型a转类类型b
        b.say();//子类B进行say
        b.say1();//子类B进行say1

    }

}
时间: 2024-10-19 19:37:29

多态(重点:方法的多态性和对象的多态性)的相关文章

Java对象的多态性

多态性在面向对象中主要有两种体现: <1>方法的重载与覆写 <2>对象的多态性 对象的多态性:向上转型:子类对象-->父类对象,向上转型会自动完成 向下转型:父类对象-->子类对象,向下转型时,必须明确地指明转型的子类类型 对象的向上转型 虽然使用的父类对象调用fun1方法,但是实际上调用的方法是被子类覆写过的方法,也就是说,如果对象发生了向上转型关系后,所调用的方法一定是被子类覆写过的方法. 但是父类的a无法调用b类中的fun3方法,因为这个方法只在子类中定义,而没有

Java面向对象-对象的多态性

Java面向对象-对象的多态性 Java中的多态性表现: 1,方法的重载和重写(覆盖): 2,可以用父类的引用指向子类的具体实现,而且可以随时更换为其他子类的具体实现: 我们先搞个父类Animal: 1 package com.java1234.chap03.sec13; 2 3 public class Animal { 4 5 public void say(){ 6 System.out.println("我是一个动物"); 7 } 8 } 再搞两个子类,分别是Dog和Cat类,

java 第十一天 面向对象(高级篇之接口、对象的多态性,instanceof)

接口的基本概念:接口的访问权限是public,关键字interface,子类通过implements关键字实现接口.一个子类可以同时实现多个接口. 对象的多态性: 两种体现形式:(1)方法的重载与覆写.(2)对象的多态性. 对象的多态性分两种: (1)向上转型:子类对象--→父类对象 (2)向下转型:父类对象--→子类对象 java中可以使用instanceof关键字判断对象到底是哪个类的实例 java 第十一天 面向对象(高级篇之接口.对象的多态性,instanceof),码迷,mamicod

继承、多态及方法重写、重载

1.多态: 多态指的是同一个方法的调用,由于对象不同可能会有不同的行为.现实生活中,同一个方法,具体实现完全不同. 多态的要点: (1)多态是方法的多态,不是属性的多态(多态与属性无关): (2)多态的存在要有3个必要条件:继承.方法重写.父类引用指向子类对象: (3)父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了. /** * - - - (1)多态是方法的多态,不死属性的多态(多态与属性无关): * - - - (2)多态的存在要有3个必要条件:继承.方法重写.父类

Python学习之旅—Day06(字符串+字典+列表重点方法)

前言: 本篇博客主要针对字符串,字典和列表中的一些容易忽略的重点方法进行整理,以期进一步夯实大家的基础. [001]字符串方法--isspace()方法 isspace()方法主要检测字符串是否只由空格组成.我们通过如下的实际例子来查看该方法: str1 = " " print(str1.isspace()) str2 = "cisco 123" print(str2.isspace()) str3 = " #" print(str2.isspa

面向对象高级——接口的基本概念和对象的多态性

接口 需要掌握接口的定义格式及使用 掌握接口与抽象类的关系 具体内容: 接口是Java中最重要的概念,接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成. 如果一个类中完全是由全局常量(static final声明)和抽象方法组成,就可以将其定义成一个接口. 接口的定义格式: interface 接口名称{    全局常量:    抽象方法: }   interface A{ // 定义接口A public static final String AUTHOR = "刘勋&q

抽象公共类,复用公共方法为多个对象

今天学习如何实现愤怒的小鸟,用到了JBox2D构建物理世界(这个不是这篇文章重点,但是很谢谢这个开源玩意) 一般一个独立的物体的实体类 import org.jbox2d.dynamics.Body; import org.liky.angrybird.util.Globals; import org.liky.angrybird.util.ImageUtils; import android.graphics.Canvas; import android.graphics.Paint; imp

java上转型和下转型(对象的多态性)

/*上转型和下转型(对象的多态性) *上转型:是子类对象由父类引用,格式:parent p=new son *也就是说,想要上转型的前提必须是有继承关系的两个类. *在调用方法的时候,上转型对象只能调用父类中有的方法,如果调用子类的方法则会报错 *下转型:是父类向下强制转换到子类对象 *前提是该父类对象必须是经过上转型的对象. * *代码示例:*/ 1 abstract class Parent{ 2 abstract void grow(); 3 } 4 class Son extends P

JavaScript原生对象属性和方法详解——Array对象 转载

length 设置或返回 数组中元素的数目. 注意:设置 length 属性可改变数组的大小.如果设置的值比其当前值小,数组将被截断,其尾部的元素将丢失.如果设置的值比它的当前值大,数组将增大,新的元素被添加到数组的尾部,它们的值为 undefined.所以length不一定代表数组的元素个数. var arr = new Array(3) arr[0] = "John" arr[1] = "Andy" arr[2] = "Wendy" cons