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. django-枚举类型扩展方法

    原文地址:https://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.get_FOO_disp ...

  2. w3c

    normative    adj. 规范的,标准的errata        n. 勘误表:正误表(erratum的复数)Substantive    adj. 有实质的:大量的:真实的:独立存在的i ...

  3. S50 抓取pattern数据

    S50(原V50) 测试机台湾久元电子研发的一款数字芯片测试系统,行业内有很多人使用: 现在记录下S50抓取pattern数据的一些方法: 程序主要是通过read_log配合c代码实现,pattern ...

  4. MQTT研究之EMQ:【JAVA代码构建X509证书【续集】】

    openssl创建私钥,获取公钥,创建证书都是比较简单的,就几个指令,很快就可以搞定,之所以说简单,是因为证书里面的基本参数配置不需要我们组装,只需要将命令行里面需要的几个参数配置进去即可.但是呢,用 ...

  5. [ZZ] 深度学习三巨头之一来清华演讲了,你只需要知道这7点

    深度学习三巨头之一来清华演讲了,你只需要知道这7点 http://wemedia.ifeng.com/10939074/wemedia.shtml Yann LeCun还提到了一项FAIR开发的,用于 ...

  6. Excel技巧--提取中文字串

    类似的,如果要提取上图第1列的商品,不要型号,如第2列. 可以考虑使用SEARCHB函数. searchb与search的区别,在于searchb函数以字节为单位搜索,search函数以字符为单位搜索 ...

  7. python中的RE模块

    re模块(* * * * *) 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列 ...

  8. Django-Form组件之字段

    Form类 创建Form类时,主要涉及到 [字段] 和 [插件],字段用于对用户请求数据的验证,插件用于自动生成HTML; 1.Django内置字段如下: 1 2 3 4 5 6 7 8 9 10 1 ...

  9. h5需要的浏览器插件

    google浏览器插件: web前段助手.vue-tools.草料二维码

  10. laravel学习资料

    http://blog.csdn.net/qq_20873039/article/category/6246852   --laravel核心概念 /Eloquent ORM / laravel bl ...