java随手笔记三之多态

高洛峰
发布: 2016-10-13 09:51:40
原创
1887 人浏览过

多态:

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

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

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

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 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;
}
}
登录后复制


来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板