1.override 重写:在继承中,子类与父类方法名相同,参数列表相同,的方法叫重写,与返回值有关;  主要应用于系统升级.

2.final 关键字:

可修饰:1.类-->被修饰后该类不能被继承

       2.方法 -->被修饰后该方法不能被重写

    3.变量-->被修饰后该变量为常量,只能赋值一次, 常量标识符全部用大写

3.多态:事物的多种形态

  满足条件:

  1.继承

  2.重写

  3.父类引用指向子类对象;

  多态弊端:不能调用子类特有的属性和行为.

  向上转型:用父类名

  向下转型:类名  对象名 =  (类名) 多态引用对象名

引入关键字 A instanceof B   判断两边的数据类型是否一致 一致返回true  不一致返回false

例:新建Animal 为父类   cat和Dog为子类 通过向下转型使用子类特有的属性及行为 test为主函数代码

public class Animal {
public String name = "动物";
public void eat(){
System.out.println("动物吃饭"); }
public void sleep(){
System.out.println("动物睡觉");
}
}

父类代码

public class cat extends Animal {
public String name = "猫猫";
public void eat(){
System.out.println("猫在吃饭");
}
public void sleep(){
System.out.println("猫在睡觉");
}
public void catchMouse(){
System.out.println("猫在抓老鼠");
}
}

子类cat代码

public class Dog extends Animal {
public String name = "狗";
public void eat(){
System.out.println("狗在吃饭"); }
public void sleep(){
System.out.println("狗在睡觉");
}
public void lookHome(){
System.out.println("狗在看家");
}
}

子类Dog代码

public class test {
public static void main(String[] a){
Animal cat = new cat();//多态 方法编译时看左边类 运行时看右边对象类
cat.eat();
System.out.println(cat.name);//多态 属性编译时看左边 运行时看左边
//即产生弊端,不能够访问子类特有的属性和行为 需向下转型
test te = new test();
te.Demo(cat);
}
public void Demo(Animal c){ //参数类型采用父类 可以采用父类的属性及行为 及向上转型
System.out.println(c.name);
if(c instanceof cat){ //通过类型匹配进行判断 如果Demo传入的实参为cat,则执行cat向下转型否则执行Dog向下转型
cat ca = (cat)c; //向下转型语句
System.out.println(ca.name);//向下转型后可以使用cat特有的属性
ca.catchMouse();//向下转型后可以使用cat特有的方法(行为).
}else if(c instanceof Dog){//同上
Dog dog = (Dog)c;
dog.lookHome();
}
}
}

运行结果为:

猫在吃饭
动物
动物
猫猫
猫在抓老鼠

主函数进行向上向下转型代码及注释,多多练习!

重写 final关键字 多态调用子类特有的属性及行为(向上向下转型)的更多相关文章

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

    /* 多态 1.没有继承就没有多态 2.代码的体现:父类类型的指针指向子类对象 3.好处:如果函数\方法参数使用的是父类对象,可以传入父类.子类对象 4.局限性: 1>父类类型的变量,不能直接调 ...

  2. java 多态 向上 向下转型

    向上转型 将子类对象当作父类对象     子类对象------>父类对象 先实例化子类 父类 父类对象 = 子类实例 package test2; class Father{ public vo ...

  3. Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型

    任何类都是object类的子类 用object对象接收数组 object类的向上向下转型

  4. java学习(六)面向对象 final关键字 多态

    1.被fnial修饰的方法不能被重写,常见的为修饰类,方法,变量 /* final可以修饰类,方法,变量 特点: final可以修饰类,该类不能被继承. final可以修饰方法,该方法不能被重写.(覆 ...

  5. 子类的实例给父类的引用 在编译器时候 jvm认为他是父类的实例 只会去寻找父类里面的方法 如果调用子类里面的属性或者方法时候 jvm会认为该引用并没有 所以会报错

  6. 抽象类、final关键字、多态

    1.1 抽象类 1.1.1 抽象类概念 C extends B,B extends A,在继承过程中,形成一个继承金字塔,位于金字塔底部的类越来越具体(强大),位于塔顶的越来越抽象(简单). 例如:人 ...

  7. 多态使用时,父类多态时需要使用子类特有对象。需要判断 就使用instanceof

    instanceof:通常在向下转型前用于健壮性的判断,判断是符合哪一个子类对象 package Polymorphic; public class TestPolymorphic { public ...

  8. LY.JAVA面向对象编程.final、多态、抽象类、接口

    2018-07-08    13:47:26 final关键字 多态 从右向前念 多态的成员访问特点及转型的理解 多态的问题理解: class 孔子爹 { public int age = 40; p ...

  9. Java基础学习之final和多态及类型转换

    finalkeyword: finalkeyword是终于的意思,能够修饰类,成员变量,成员方法. •    修饰类,类不能被继承 •    修饰变量,变量就变成了常量,仅仅能被赋值一次. •    ...

随机推荐

  1. GIT & VersionControl

    一.Git Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. [1]  Git 是 Linus Torvalds 为了帮助管理 Linux ...

  2. nginx ssl 配置

    user www www; worker_processes auto; error_log /home/wwwlogs/nginx_error.log crit; pid /usr/local/ng ...

  3. Mediawiki PlantUML Graphviz 图片 中文 乱码

    安装Mediawiki 的  PlantUML  Graphviz   插件后,生成图片时,中文成乱码问题. 环境:Ubuntu 16.04 MediaWiki 1.31.1 PHP 7.0.32-0 ...

  4. 利用R与SAS进行关联规则挖掘

    一.利用R进行关联规则挖掘 数据结构如下: (共9个itemsets,5个items) 首先读入数据: demodata = read.transactions("C:\\Documents ...

  5. 360软件的木马查杀、漏洞修复等组件不能使用,提示runtime error

    一.故障现象:1.360软件的木马查杀.漏洞修复等组件不能使用,提示runtime error2.暴风影音等很多软件不能正常使用3.设备管理器不能打开,提示“MMC 不能打开文件”4.部分https安 ...

  6. Schema、API Schema与MFn

    大部分知识都是相通的,Maya和USD在设计上有很多相似之处,USD的Schema粗看很难理解,但实际上与Maya的MFn有着异曲同工之处.这篇文章会简单介绍一下这两个知识点,做个对比,了解下它们在各 ...

  7. Winform 界面执行耗时操作--UI卡顿假死问题

    UI卡顿假死问题 误区1:使用不同的线程操作UI控件和耗时操作(即,跨线程操作UI控件CheckForIllegalCrossThreadCalls = false;), 注意:此处只是为了记录... ...

  8. 联想T470笔记本GPT改MBR分区

    联想T470笔记本GPT改MBR分区 7000多元买的,这个笔记本配置还可以,就是感觉特别卡顿,于是想重做WIN7系统,为了方便激活,想把GPT分区改成MBR分区. 进入微PE1.2,用傲梅分区助手删 ...

  9. 7.STM32中GPIO理解

    端口概述 在STM32中,每个I/O端口可以由软件配置成为输入/输出模式.复位期间或刚复位后,I/O端口被配置成浮空输入模式.所有的GPIO引脚有一个内部弱上拉和弱下拉,当配置为输入时, 它们可以被激 ...

  10. note10 元组

    元组 Tuple +元组即不可变(immutable)列表 除了可改变列表内容的方法外,其他方法均适用于元组 因此,索引.切片.len().print等均可用 但是,appeng.extend.del ...