传智播客——毕向东25--第8天总结-7

1.多态:
    多态:事物存在的多种体现形态;
    动物 x=new 猫();
多态的扩展性:
    1.多态的体现:
            父类的引用指向了子类对象;
    2.多态的前提:
            必须是类与类之间的关系,要么继承,要么实现
    3.多态的好处:
            提高程序的扩展性
     4.多态的弊端:
             只能使用在父类的引用访问父类中的
abstract class Animal
{
       abstract void eat();
}
class Cat extends Animal
{
         public void eat()
        {
             System.out.println("吃老鼠")
        }
        public void CatchMouse()
          {
               System.out.println("抓老鼠")
         }
}
class Dog extends Animal
{
    public void eat()
    {
         System.out.println("吃骨头");
    }
    public void kanjia()
    {
         System.out.println("看家");
     }
}
class Demo
{
    public static void main(String[] args)
    {
         function(new Cat);
         function(new Dog);
    }
    public static void function(Animal a)
    {
         a.eat();
    }
}

2.多态类型提升:
      向上提升:Animal a=new Cat();
    a.eat();
      向下转型:
  Cat c=(Cat)a;
  c.CatchMouse();
判断所属类型:instanceof
if(a instanceof Cat) //a 是不是Cat类型
{
 Cat c=(Cat);
 c.CathcMouse();
}
3.示例:
 基础班学生:学习 、睡觉
 高级班学生:学习、睡觉
abstract class Student
{
 public abstract void Study();
 public void sleep()
 {
  System.out.println("躺着睡");
 }
}
class DoStudent
{
 public void doSome(Student stu)
 {
  stu.study();
  stu.sleep();
 }
}
class BaseStudent extends Student
{
 public void study()
 {
  System.out.println("base study");
 }
}
class Demo
{
 public static void main(String[] args)
 {
  DoStudent d=new DoStudent();
  d.doSome(new BaseStudent());
 }
}
4.多态成员的特点:
     Fu f=new Zi();
     System.out.println(f.num);//输入父类的num值
     Zi z=new Zi();
     System.out.println(z.num);//输出子类的num值
    多态中成员变量的特点:
              无论编译和运行,都参考左边(引用型变量所属的类)
    静态方法、函数:静态所属该类与对象无关;


5.object类 -equals()
equals:(equals(object obj))
Demo d1=new Demo();
Demo d2=new Demo();
Demo d3=d1;
System.out.println(d.equals(d3));// true
System.out.println(d1==d2);//false
System.out.println(d1==d3);//true
其实比较的是内存地址

示例类:
class Demo //默认继承object
{
 private int num;
 Demo(int num)
 {
  this.num=num;
 }
 public boolean equals(object obj)
 {
  if(!(obj instanceof Demo))
   return false;
  Demo d=(Demo)obj;
  return this.num=d.num;
 }
}
class Demo
{
 public static void main(String[] agrs)
 {
  Demo d1=new Demo(4);
  Demo d2=new Demo(5);
  System.out.println(d1.equals(d2));
 }
}

6.object类中的toString():
 重写该方法:public String toString()
   {
    ......;
   }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值