栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java学习笔记4——多态

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java学习笔记4——多态

java学习笔记4——多态
    java引用类型有两个类型:编译类型和运行类型;编译类型由声明该变量时的类型决定,运行类型由实际赋给该变量的对象决定。向上转型:父类可以指向子类
base base=new Sub();//父类指向子类对象,base是编译类型,Sub是运行类型
    向下转型:编译类型为父类可以向下转型为运行子类
Sub sub=(Sub)base;//base向下转型,强制类型转化,编译类型由base转为Sub
    多态下,成员变量从编译类型开始访问
System.out.println(base.a);//输出10;
System.out.println(((Sub)base).a);//输出9;
    多态下,成员方法若被重写,调用被重写的方法,且不在编译类型下的方法无法调用
base.function1();//调用了Sub的重写方法
        
((Sub) base).sub_function();//加强制类型转换,否则无法调用子类的特有方法

6.本质类型是运行类型

System.out.println(base.getClass());//输出都是com.test.Sub
System.out.println(((Sub)base).getClass());

全部测试代码如下:

package com.test;

public class Test03 {
    public static void main(String[] args) {
        base base=new Sub();//父类指向子类对象,base是编译类型,Sub是运行类型
        
        System.out.println(base.a);//输出10;
        System.out.println(((Sub)base).a);//输出9;
        
        base.function1();//调用了Sub的重写方法
        
        ((Sub) base).sub_function();//加强制类型转换,否则无法调用子类的特有方法
        
        System.out.println(base.getClass());//输出都是com.test.Sub
        System.out.println(((Sub)base).getClass());
    }
}

class base{//父类base
    public int a=10;//子类a初始化10
    public static void f1(){
        System.out.println("nihao");
    }
    public void function1(){
        System.out.println("base的function1调用");//父类的function1
    }
}
class Sub extends base{
    public int a=9;//子类a初始化9
    @Override
    public void function1() {
        System.out.println("Sub的function1调用");//子类的function1
    }
    public void sub_function(){}//子类特有方法

}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756434.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号