课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > 【昆明Java培训】 java知识点之多态
  • 【昆明Java培训】 java知识点之多态

    发布:昆明Java培训      来源:达内新闻      时间:2016-10-21

  • 昆明Java培训的老师今天给同学们讲 java的多态。

    多态:

    ---一个对象的多种形态

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

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

    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());

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

    eg: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 ame;

    private int age;

    public Person(){}

    public Person(String name,int age){

    this.name = ame;

    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;

    }

    }

    昆明Java培训的老师讲的知识点大家都懂了吧,如果没有懂的地方记得联系我们昆明Java培训班的老师。

    推荐文章

上一篇:快速排序(QuickSort)-Java实现

下一篇:Java培训:Struts2的配置文件

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56