Java的多态,回调

论坛 期权论坛 脚本     
匿名技术用户   2020-12-22 14:30   104   0

自学记录

好吧,今天应该是学习了多态和回调(callback),好吧以前居然没听过回调函数这个概念,应该可以简称其为模板吧!

Java的多态

什么是多态?

多态就是事物存在的多种体现。假如现在有一个动物类Anminal。有一只猫,猫属于猫类Cat;我们可以说猫是动物,也可以说动物有猫;是is ahas a的关系,这也就是多态的吧!反正我是这样理解的!

多态的前提:继承,重写,父类引用指向子类对象!

对象的转型:分为向上转型(父类引用指向子类对象),向下转型(子类引用指向父类对象,需要强制转型);

程序实例:

public class Main {
 public static void Function(Anminal a){//相当于Anminal a = new Anminal();
  a.showAttribute();//传进来什么对象就调用什么方法,当然前提是子类要有父类的方法
 }
    public static void main(String[] args) {
  Anminal anminal = new Dog();//狗属于动物类,可以测试一下!对象的向上转型
  System.out.println(anminal instanceof Anminal);//anminal是动物类的引用
  Dog dog = (Dog)new Anminal();//对象的向下转型,需要强制转型
  
 }
}
class Anminal{
 public void showAttribute(){
  System.out.println("我是动物");
 }
}
class Dog extends Anminal{
 public void showAttribute(){
  System.out.println("我是狗");
 }
}
class Cat extends Anminal{
 public void showAttribute(){
  System.out.println("我是猫");
 }
}

回调(实例)

看了别人的一些代码和博客后,发现有人给回调函数(callback或hook);此处就不多说了,反正就是相当于一个模板,把固定的东西放到那,需要什么调用什么,系统会自动实现所需功能,貌似挺有用的!肯定是的。

Info接口

package com.zxjl.oop.hook;

interface Info {
     public void setName(String name);
     public String showName();//这个是直接显示姓名用的
     public String getName();//获取名字信息,但不直接显示
     
     public void setAge(int age);
     public int showAge();
     public int getAge();
     
     public void setElse(String sElse);//懒得写了就直接一个else代替;
     public String showElse();
     public String getElse();
}

Demo:相当于一个模板

package com.zxjl.oop.hook;

public class Demo {
  public static void MyPrint(Info my){
   System.out.println("您的信息已经设置完成");
   System.out.println("正在输出您的信息......");
   System.out.println("姓名\t年龄\t其他信息");
   my.toString();
  }
}
//就是把他当成一个模板使用

InfoMain:主类

package com.zxjl.oop.hook;

public class InfoMain {
    public static void main(String[] args) {
  Student stu = new Student();
  stu.setName("大神");
  stu.setAge(18);
  stu.setElse("我的爱好是:打篮球,羽毛球!");
  Demo.MyPrint(stu);
 }
}

class Student implements Info{
     String name;
     String sElse;
     int age;
 @Override
 public void setName(String name) {
  // TODO Auto-generated method stub
  this.name=name;
 }

 @Override
 public String showName() {
  // TODO Auto-generated method stub 
  System.out.println(this.name);
  return name;
 }

 @Override
 public String getName() {
  // TODO Auto-generated method stub
  
  return name;
 }

 @Override
 public void setAge(int age) {
  // TODO Auto-generated method stub
  this.age = age;
 }

 @Override
 public int showAge() {
  // TODO Auto-generated method stub
  System.out.println(this.age);
  return age;
 }

 @Override
 public  int getAge() {
  // TODO Auto-generated method stub
  return this.age;
 }

 @Override
 public void setElse(String sElse) {
  // TODO Auto-generated method stub
  this.sElse = sElse;
 }

 @Override
 public String showElse() {
  // TODO Auto-generated method stub
  System.out.println(this.sElse);
  return sElse;
 }

 @Override
 public String getElse() {
  // TODO Auto-generated method stub
  return sElse;
 }
    
 public String toString(){
  String str = this.name+"\t"+this.age+"\t"+this.sElse;
  System.out.println(str);
  return str;
 }
}

好了应该就是这些内容了,额,该说的重点又没说(无所畏惧)。。。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP