千家信息网

java多态注意项有哪些

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章将为大家详细讲解有关java多态注意项有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。展示多态现象package test;//父类引用,指向(不同子类
千家信息网最后更新 2025年01月18日java多态注意项有哪些

这篇文章将为大家详细讲解有关java多态注意项有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

展示多态现象

package test;//父类引用,指向(不同子类)的实例,对同一个实例方法名调用,调用的程序不//一样。继承是多态得以实现的基础。public interface test1 {    void shout();}
package test;public class test2 implements test1 {    public void shout() {        System.out.println("1111");    }}
package test;public class test3 implements test1 {    public void shout() {        System.out.println("222222");    }}
package test;public class test4 {    public static void main(String[] args) {        test1 ts = new test2();        ts.shout();        test1 ts1 = new test3();        ts1.shout();    }}

多态的基础以及限制

package test;public class test5 {    public static void speak() {        System.out.println("speak:");    }}
package test;public class test6 extends test5{    public static void speak() {        System.out.println("11111");    }//多态的基础是继承和重写    //多态仅限于实例方法    public static void main(String[] args) {        test5 ts1 = new test5();        test6 ts = new test6();        ts1.speak();        ts.speak();    }}

对象类型转换

package test;public class test7 {        public void speak(){            System.out.println("speak:");        }}
package test;public class test8 extends test7{    @Override    public void speak() {        System.out.println("1111");    }}
package test;public class test9 extends test7 {    @Override    public void speak() {        System.out.println("22222");    }    protected void action() {        System.out.println("敲代码");    }}
package test;public class test10 {    public static void main(String[] args) {        //向上类型转换 隐式 安全        //将test8的对象当作test7类型来用        test7 ts = new test8();        ts.speak();        //强制类型转换 显示 不安全        test7 ts1 = new test9();        test9 ts2 = (test9) ts1;        ts2.speak();        //怎么避免强制类型转换带来的不安全  面向接口编程加instanceof        test7 ts3 = new test8();        test7 ts4 = null;        if (ts3 instanceof test9) {            ts4 = (test9) ts3;        }        if (ts3 instanceof test8) {            ts4 = (test8) ts3;        }        ts4.speak();    }}

object类


Object类的常用方法也可以被重写

package test;public class test11 {    public void speak(){        System.out.println("speak:");    }}
package test;public class test12 {    public static void main(String[] args) {        test11 ts = new test11();        ts.speak();        //返回该对象的字符串表示        System.out.println(ts.toString());        //返回该对象的哈希码值        System.out.println(ts.hashCode());    }}

匿名内部类

package test;public interface test13 {    void speak();}
package test;public class test14 {    //类里面定义的类称之为内部类(Inner Class),内部类是外部类的一个成员。    //Java内部类可以分为:成员内部类、方法内部类和匿名内部类等。    class person implements test13{        @Override        public void speak() {            System.out.println("111111");        }    }    public static void main(String[] args) {        class person1 implements test13{            @Override            public void speak() {                System.out.println("2222222222");            }        }//        可以使用匿名内部类来实现接口。所谓匿名内部类就是没有名字的内部类,表面上看//        起来它似乎有名字,实际那不是它的名字。当程序中使用匿名内部类时,在定义匿名//        内部类的地方往往直接创建该类的一个对象。        new test13(){            @Override            public void speak() {                System.out.println("3333333");            }        }.speak();    }}

关于"java多态注意项有哪些"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0