Java多态_Java多态怎么使用_Java多态例子
2016-12-07 13:19:12  By: dwtedx

多态

一个对象的多种形态

实质:父类的引用指向子类对象

前提:必须有继承或者是实现

class Animal{}
    class Dog extends Animal{}
    main{
    Dog d = new Dog(); //本态
    Animal dog = new Dog(); //多态
}
 

注意

通过多态形式创建的对象、只能访问子父类共有的成员方法、运行结果为子类结果是子类特有的成员方法不能方法、


虚拟方法调用:

父类对象调用子类特有的方法

Student S = new Student("张三",100);
Person p = new Student("李四",200);
System.out.println(S.say());
System.out.println(p.say());

多态数组 — 在引用类型的数组中、使用多态形式存放对象

Person[] person = {new Person("张三", 32),
new Student("李四", 21, 120, 90.0),
new Student("王五", 22, 119, 91.5),
new Teacher("刘老师", 35, 10, "Java EE"),
new Teacher("张老师", 11)};


多态参数 — 方法参数列表中的引用类型参数、instanceof运算符 — 判断一个对象是否为指定类型(形态)、强制类型转换 — 将对象从一种引用形态转换为另一种引用形态


对象关联

一个对象中使用了另一个对象、一对一、一对多、多对一

class test4 {
    public static void main(String[] args){
     
        Person p = new Person("王五",50);
        method(p);
        Student S = new Student("张三",100);
        method(S);
        Person p1 = new Student("赵四",100);
        method(p1);
    }
     
    public static void method(Person p){
        if (p instanceof Student){
            System.out.println("教师");
            Student s = (Student)p;
            System.out.println("本态方法调用:" p.say());
        }else{
            System.out.println("人");
        }
         
        System.out.println(p.say());
    }
}


人类

class Person{
    private String name;
    private int age;
     
    public Person(){}
     
    public Person(String name,int age){
        this.name = name;
        this.age = age;
    }
     
    public String getName(){
        return name;
    }
     
    public String say(){
        return "姓名:" name "年龄:" age;
    }
}


学生类

class Student extends Person{
    private int id;
    private double score;
     
    public Student(String name,int id){
        this(name,20,id,98.5);
    }
     
    public Student(String name,int age,int id,double score){
        super(name,age);
        this.id = id;
        this.score = score;
    }
     
    public double getId(){
        return id;
    }
     
    public String say(){
        return super.say() "学号:" id "分数:" score;
    }
}


若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


猜你喜欢的

快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+