JAVA Q

JAVA

学习内容:

  • 1 java 多态

    2 java 对象转型

    3 java 抽象类

理想和现实总是有差距的,幸好还有差距,不然,谁还稀罕理想?

1 java 多态

面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的
指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式
多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。

父类
public class Text {
      static  void  animalCry(Animal a){
         a.shout();
      }
     public   static  void main(String[] agrs){
          Dog s1=new Dog();
          Cat s= new Cat();
          System.out.println(s1);
          System.out.println(new Cat());
          animalCry(s1);
          animalCry(s);
          animalCry(new Cat());
}
子类
public class Animal {
    public void shout(){
        System.out.println("A  big   voice");
    }

}
 class  Dog  extends Animal{
    public  void  shout(){
        System.out.println("  wang    wang");
    }
    public  void  seedoor(){System.out.println("See  Door ");}
}
class   Cat  extends  Animal{
    public  void shout(){
        System.out.println("meow  meow");
    }
    public  void catchMouse(){
        System.out.println(" catch mouse");
    }
}
class Mouse  extends Animal{

}

2 java 对象转型

父类引用指向子类对象,我们称这个过程为向上转型,属于自动类型转换。

向上转型后的父类引用变量只能调用它编译类型的方法,不能调用它运行时类型的方法。这时,我们就需要进行类型的强制转换,我们称之为向下转型!

父类
public class Text {
      static  void  animalCry(Animal a){
         a.shout();
      }
     public   static  void main(String[] agrs){
       
          Animal a= new Dog();
          a.shout();
          a =(Dog)a;
          ((Dog) a).seedoor();
       //   Cat c3=(Cat) a;
      //    c3.catchMouse();
          if(a  instanceof  Dog)
          {
             Dog d3=(Dog) a;
             d3.seedoor();
          }else if(a instanceof Cat){
              Cat c4=(Cat) a;
              c4.catchMouse();
          }

     }
子类
public class Animal {
    public void shout(){
        System.out.println("A  big   voice");
    }

}
 class  Dog  extends Animal{
    public  void  shout(){
        System.out.println("  wang    wang");
    }
    public  void  seedoor(){System.out.println("See  Door ");}
}
class   Cat  extends  Animal{
    public  void shout(){
        System.out.println("meow  meow");
    }
    public  void catchMouse(){
        System.out.println(" catch mouse");
    }
}
class Mouse  extends Animal{

}

3 java 抽象类

1抽象方法

使用abstract修饰的方法,没有方法体,只有声明。定义的是-种"规范”,就是告诉子类必须要给抽象方法提供具体的实现。

2抽象类

包含抽象方法的类就是抽象类。通过abstract方法定义规范,然后要求子类必须定义具体实现。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用。

抽象类
package com.xfqg.abstactClass;

 public   abstract class Student {
    private String name;
    abstract public void study();
    public String getName(){
        return  name;
    }
    public void setName(String name){
        this.name=name;
    }
    public  Student(String name){
        this.name=name;
    }
    Student(){}

}


子类
package com.xfqg.abstactClass;

public class Text {
    public static void main(String[] agrs) {
        Student a = new SxStu();
        a.study();
    }
}
class SxStu extends Student{
      public void study(){
          System.out.println("Hard work more");
        }
 }





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值