抽象
关键字:abstract
抽象的方法特点是:
1.没有方法体
2.如果类里面的构造方法是抽象的,则类也是应该属于抽象方法
3.父类的构造方法如果是抽象的,则构造方法不需要填写内容,子类中需要重写该方法;
public abstract void eat();
多态:
(1)编译的时候,条用的父类的方法。运用的时候实际上是调用的子类的方法里面
(2)父类的变量可以接受子类里面的对象
多态的使用方法:
package day11;
/**
* 教员
* @author yangzc
*
*/
public abstract class Teacher {
String name;
int age;
/**
* 自我介绍
*/
protected abstract void sayHi();
/**
* 授课
*/
public abstract void lesson();
}
package day11;
/**
* Java教员
* @author yangzc
*
*/
public class JavaTeacher extends Teacher {
@Override
protected void sayHi() {
System.out.println("大家好!我是java老师!");
// TODO Auto-generated method stub
}
@Override
public void lesson() {
System.out.println("打开eclipse");
System.out.println("知识点讲解");
System.out.println("总结提问");
}
}
package day11;
/**
* .NET教员
* @author yangzc
*
*/
public class DotNetTeacher extends Teacher {
@Override
public void sayHi() {
// TODO Auto-generated method stub
System.out.println("大家好!我是.NET老师!");
}
@Override
public void lesson() {
// TODO Auto-generated method stub
System.out.println("打开Visual Studio");
System.out.println("知识点讲解");
System.out.println("总结提问");
}
}
package day11;
public class SQLServerTeacher extends Teacher {
@Override
public void sayHi() {
// TODO Auto-generated method stub
System.out.println("大家好!我是数据库老师!");
}
@Override
public void lesson() {
// TODO Auto-generated method stub
System.out.println("打开企业管理器");
System.out.println("知识点讲解");
System.out.println("总结提问");
}
}
package day11;
/**
* 教学管理
* @author yangzc
*
*/
public class Manager {
/**
* 对教员进行考核
* @param t 表示教员
*/
public void judge(Teacher t){
t.sayHi();
t.lesson();
}
}
package day11;
/**
* 对教学管理中心进行测试
* @author yangzc
*
*/
public class ManagerTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
JavaTeacher t1 = new JavaTeacher();
DotNetTeacher t2 = new DotNetTeacher();
Manager manager = new Manager();
SQLServerTeacher t3 = new SQLServerTeacher();
//对java老师进行评估
//manager.judge(t1);
//对.NET老师进行评估
//manager.judge(t2);
//对数据库老师进行评估
manager.judge(t3);
}
}
多态重要部分 是由4部分组成
父类的方法定义
父类的方法中,是抽象类,包含着所有的属性,构造方法也是抽象的。
子类的定义
子类先继承父类的属性,然后CTRL+1 重写父类的构造方法,将子类的内容填写进去
测试的定义
写出一个函数 ,里面的参数是父类的程序名字 +对象名字,函数中的内容写出直接调用该对象的父类的函数名字
实例化的定义
将子类和测试的程序导入实例化中