多态&&父类调用子类特有的方法

/*

多态

1.没有继承就没有多态

2.代码的体现:父类类型的指针指向子类对象

3.好处:如果函数\方法参数使用的是父类对象,可以传入父类、子类对象

4.局限性:

1》父类类型的变量,不能直接调用子类特有的方法,必须强转为子类类型变量后,才能直接调用子类特有的方法

Animal *aa = [Cat new]; // Animal是父类 Cat是子类

Cat *dd = (Cat *)aa;  // 强制转换为子类

[dd run]; // run是子类Cat特有的方法

*/

时间: 2024-10-10 05:43:45

多态&&父类调用子类特有的方法的相关文章

多态父类引用指向子类对象时,如何调用子类的独有方法?

父类:A 子类:Person A a1 = new Person(); if(a1 instanceof Person) { System.out.println("true"); ((Person) a1).getPersonName();      //调用子类独有的方法 }

Java 多态 父类和子类方法的访问控制权限

Java 多态 父类和子类方法的访问控制权限 @author ixenos 父类和子类方法的访问控制权限 继承是为了扩展类的功能,而这种扩展显然就是对一个原始类的扩展,目的还是向上转型来调用,所以这就是一个对象多态的问题. 既然多态,那么访问控制权限就要让父类也能访问. 也就是说,子类重写方法时不能使该方法拥有比父类更严格的访问控制权限. 否则违背了多态,导致向上类型转换后,使用父类变量无法调用该子类私有方法.

Java父类对象调用子类实体:方法重写与动态调用

众所周知Java的handle和C++的ponter而不是object对应,我们很熟悉C++的父类pointer调用子类实体的例子,那么对于Java的handle是不是也可以这样呢? 这里我先给一个例子 class Father{ public void announce(){ System.out.println("Father"); } } class Child extends Father{ @Override public void announce(){ System.ou

java反射与多态(父类调用子类)的代码演示

package Test0817; import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method; class Base{ int a; Base(){ a=1; System.out.println("Base Construct"); } public void f(){ System.out.println("Base"); }} class Sub ext

JavaSE8基础 多态 子类重写了父类的普通方法 父类引用调用子类中重写的方法

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: class Father { public int num = 1; public void sayHello() { System.out.println("hello"); } public static void staticFun() { System.out.println("s

java继承-子类调用父类的方法中包含子类重写的方法

# 看题目是不是很绕,这个我也不知道怎么才能更简单的表达了... # 先看代码: public class Common { public static void main(String[] args) { Sub sub = new Sub(); sub.testSub(); } } class Parent { protected boolean test() { throw new RuntimeException(); } protected void testParent() { if

java中父类与子类的关系以及使用

java中父类与子类的关系以及使用 在java中规定:一个父类可以有多个子类,但是一个子类只能有一个父类.子类可以通过extends关键字来继承父类.做个比较通俗的比喻,就像一个父亲可以有多个亲孩子,但是一个孩子只能有一个亲生父亲. 1.继承以及重写:子类继承父类是对父类属性和方法的全面继承,同时子类在继承了父类的方法后,可对父类的方法进行重写. public class Son extends Fat{ private int b; private String h1; public void

python 继承/父类和子类的关系

# <editor-fold desc="父类和子类关系,继承"># <editor-fold desc="类--讲解--Car"> class Car(): def __init__(self,make,model,year): self.make=make self.model=model self.year =year self.meter=0 def get_car_desc(self): long_name=str(self.yea

父类和子类关系/继承

#!/usr/bin/env python # -*- coding: utf-8 -*- """ @File:继承_子类和父类的关系.py @E-mail:[email protected] @Time:2020/4/4 12:39 上午 @Author:Nobita @Version:1.0 @Desciption:父类和子类关系/继承 """ class Car(): def __init__(self, make, model, year