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. 从零开始在iPhone上运行视频流实时预测模型应用,只需10步

    1、买一台苹果电脑,建议MacBook Pro. 2、安装Xcode. 3、克隆TensorFlow:https://github.com/tensorflow/tensorflow.git 4、下载 ...

  2. Spark菜鸟记录

    1.RDD[(k,v)] join()优化,join之前会对两个RDD的key做hash,通过网络把相同hash值的数据传到同一个节点,因此对多次join的RDD 做预分区与持久化可提高效率. map ...

  3. 一道考查request导致的安全性问题的ctf题

    这道题是在看红日安全团队的代码审计系列文章时碰到的,感觉挺有意思的,所以做了下.题目代码如下 //index.php <?php require 'db.inc.php'; function d ...

  4. golang-http-post

    func httpPost() { resp, err := http.Post("https://www.abcd123.top/api/v1/login", "app ...

  5. SignalR 行实时通信最大连接数

    SignalR 搭建实时刷新应用虽然非常方便,但是有个问题你必须考虑到,就是一般的浏览器,对于SignalR的全双工通信方式,绝大多数浏览器都只支持6个新窗口,如果你打开第7个,那么新的框口页面是不会 ...

  6. Vue 错误记录:Cannot read property 'beforeRouteEnter' of undefined

    点击某路由链接,页面提示: Cannot read property 'beforeRouteEnter' of undefined 查看代码并无手写beforeRouterEnter设置, 把页面内 ...

  7. Day 16 模块和包的导入

    包的认识 包通过文件夹来管理一些列功能相近的模块 包:一系列模块的集合体 重点:包中一定有一个专门来管理包中所有模块的文件 包名:存放一系列模块的文件夹名字 包名(包对象)存放的是管理模块的那个文件地 ...

  8. elasticsearch -- kibana安装配置

    Kibana 是为Elasticsearch设计的开源分析和可视化平台,你可以使用 Kibana 来搜索,查看存储在 Elasticsearch 索引中的数据并与之交互.你可以很容易实现高级的数据分析 ...

  9. Centos7下安装pptp客户端

    1.使用yum安装ppp和pptp yum install ppp pptp 2.配置pptp pptpsetup --create vpn连接名称(自定义) --server VPN服务器IP -- ...

  10. 嵌入式全志V3s荔枝派板卡移植 aircrack-ng

    我使用的是aircrack-ng-1.1.tar.gz这个版本的包. 编辑common.mak,在27行COMMON_FLAGS = 下加入嵌入式开发的环境 -I 和 -L : COMMON_CFLA ...