- 抽象类的概念和作用
- 抽象类
- 抽象方法的特点
- 抽象类的特点
- 抽象类被继承实现抽象方法
- 抽象类应用模板方法模式
- 定义
- 意图
- 例程代码
- 接口概念和作用
- 接口语法
- 接口的特点
- 接口和抽象类的区别
- 接口代码实现
Java中可以定义没有方法体的方法,该方法由子类来具体实现。该没有方法体的方法我们称之为抽象方法,含有抽象方法的我们称之为抽象类。
抽象方法的特点- 只有方法头没有方法体
- 抽象方法用abstract来修饰
- 抽象方法代表一种不确定的操作或行为
- 抽象方法不能被调用
- 定义中含有抽象方法的类叫做抽象类
- 抽象类用abstract来修饰
- 抽象类代表一种抽象的对象类型
- 抽象类不能被实例化
- 抽象类中可以有具体方法,可以没有抽象方法
注意:包含有抽象方法的类一定是抽象类,但抽象类不一定有抽象方法
抽象类被继承实现抽象方法abstract class Demo1
{
abstract public void printInfo();
}
class Demo2 extends Demo1
{
public void printInfo() {
// TODO Auto-generated method stub
System.out.println("被实现的方法");
}
}
//抽象类不能被实例化,必须通过继承实现它的抽象方法
public class Test {
public static void main(String[] args) {
Demo2 d = new Demo2();
d.printInfo();
}
}
一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体行为。
意图定义了一个操作中的一个算法框架,把一些步骤推迟到子类去实现。模板方法模式让子类不需要改变算法结构。
//模板方法
public void work(){
//1.授课前准备
prepared();
//2.进行授课
teaching();
//3.授课结束
end();
}
例程代码
abstract class Con1
{
abstract void initUart();
abstract void getCommand();
abstract void openCurse();
abstract void openLight();
abstract void openTv();
public void work()
{
initUart();
getCommand();
openCurse();
openLight();
openTv();
}
}
class C51 extends Con1
{
void initUart(){
System.out.println("C51 inituart");
}
void getCommand(){
System.out.println("C51 getCommand");
}
void openCurse(){
System.out.println("C51 openCurse");
}
void openLight(){
System.out.println("C51 openLight");
}
void openTv(){
System.out.println("C51 openTv");
}
}
class C15 extends Con1
{
void initUart(){
System.out.println("C15 inituart");
}
void getCommand(){
System.out.println("C15 getCommand");
}
void openCurse(){
System.out.println("C15 openCurse");
}
void openLight(){
System.out.println("C15 openLight");
}
void openTv(){
System.out.println("C15 openTv");
}
}
public class Test {
public static void main(String[] args) {
C51 c = new C51();
c.work();
C15 d = new C15();
d.work();
}
}
interface 接口名{
//共有静态常量,抽象方法
}
接口的特点
- 接口中只能存放静态常量(用的不多)和静态方法
- java接口是对功能的拓展
- 通过实现接口,java类可以实现多实现
- 一个类可以同时继承(extends)一个父类并且实现(implements)多个接口
- 接口与接口之间可以使用extends实现继承
- 抽象类和具体实现之间是一个继承关系,也就是如果采用抽象类的方式,则父类和子类在概念上应该是相同的。
- 接口和实现类在概念上不要求相同,接口只是抽取相互之间没有关系的类的共同特征,而不去关注类之间的关系,它可以使没有层次关系的类具有相同的行为。
- 抽象类是一组具有相同属性和行为的逻辑上有关系的事物的一种抽象,而接口则是对一组具有相同属性的行为的逻辑上不相关的食物的一种抽象。
interface xingWei
{
abstract void eat();
abstract void drink();
}
class People implements xingWei
{
public void eat() {
// TODO Auto-generated method stub
System.out.println("人吃饭");
}
public void drink() {
// TODO Auto-generated method stub
System.out.println("人喝水");
}
}
class Animal implements xingWei
{
public void eat() {
// TODO Auto-generated method stub
System.out.println("动物吃饭");
}
public void drink() {
// TODO Auto-generated method stub
System.out.println("动物喝水");
}
}
public class Test {
public static void main(String[] args) {
new People().drink();
new Animal().drink();
}
}
关于抽象类抽象方法和接口的相关知识总结到此。
努力一点吧,为了能走更好的路,遇见更优秀的人。



