自学记录
好吧,今天应该是学习了多态和回调(callback),好吧以前居然没听过回调函数这个概念,应该可以简称其为模板吧!
Java的多态
什么是多态?
多态就是事物存在的多种体现。假如现在有一个动物类Anminal。有一只猫,猫属于猫类Cat;我们可以说猫是动物,也可以说动物有猫;是is a与has 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;
}
}
好了应该就是这些内容了,额,该说的重点又没说(无所畏惧)。。。
|