java多态

1.多态性

多态性在java中表现为:方法的重载、重写和对象的多态性,实现多态的三个必要条件:继承、重写、向上转型。

       ① 继承:多态中必须存在继承关系的子父类;

       ② 重写:子类对父类方法进行重新定义,在调用这些方法时会调用子类的方法;

       ③ 向上转型:在多态种需要将子类的引用赋给父类对象,这样该引用既能调用父类的方法,又能调用子类的方法。

Tips:

       ① 一个引用类型变量,如果声明为父类的类型,但实际引用的是子类多想,那么该变量就不能再访问子类中添加的属性和方法,  因为属性是在编译时确定的,当编译时引用类型变量为父类类型,没有新添加的子类属性,因而编译错误。如:

Student stu = new Student();
stu.major = "major_name";  //编译正常
Person stu1 = new Student(); //父类的引用对象指向子类的实例
stu1.major = "major_name2";  //编译报错

      ② 虚拟方法调用(Virtual Method Invocation),见下程序,编译时stu为Person,方法的调用是在运行时确定的,因此运行时调用的是Student类的方法,即动态绑定。编译时,要看引用变量所属的类中是否有所调用的方法;运行时,调用实际对象所属的类中的重写方法。

Person stu = new Student();
stu.getInfo;   //调用Student的方法

       ③ 成员变量不具备多态性,只看引用变脸所属的类。

 

2. instanceof 操作符

b instanceof A:用于检验b是否为A的对象,返回值为boolean类型。

Tips:

          ① b所属的类与A必须是子类和父类的关系;

          ② 如果b属于A的子类A1,那么返回值也是True。

 

3. Object类

Object 类是java基类,是所有类的根父类,在类的声明时未使用extends指明父类的情况下,默认父类为Object。

Object中的几个重要方法:

         ① 当方法中的要传进一个不确定的类,可以用Object设置形参

         ② public Object()方法,构造函数;

         ③ getClass()方法,可用于返回对象执行时的Class实例,然后使用此实例调用getName()方法获取该类的名称语法:

                                                                getClass().getname();

         ④ toString()方法,用于打印返回的对象,通常与getClass()方法联合使用;

 4. 对象类型的转换

java中对象类型的转换主要包括向上转型和向下转型操作。

        ① 向上转型是指子类到父类的类型转换,可以自动进行;

 Person stu = new Student();//将学生对象看作是人对象,称为向上转型

        ② 向下转型是指父类到子类的类型转换,只能通过强制类型转换实现,该方式称为显式类型转换。

Person stu = new Person();
Student stu1 = (Student) stu; 将父类对象赋予子类对象,强制转换为子类型

 

5. equals()方法

equals()方法用于比较两个对象的实际内容,“==”运算符用于比较连个对象的引用是否相等(比较两个对象的引用地址)。

public class Person(){
    public static void main(String[] args){
        String stu1 = new String("zhangsan");
        String stu2 = new String("zhangsan");
        System.out.println(stu1 == stu2);    //返回false
        System.out.println(stu1.equals(stu2));   //返回true
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值