java基础—面向对象(二)
抽象类和接口
一、抽象类
抽象类的需要用abstract关键字修饰,抽象类中可以有抽象方法,
也可以有具体实现功能的方法。如果子类继承一个抽象类就必须
实现该抽象类的所有的抽象方法,否则也要声明为抽象类。
抽象类:
1.关键字abstract
2.半成品,没有完成的类
抽象方法:
1.有抽象方法,只有方法的定义,没有方法体,连大括号都没有;
该抽象方法也要用abstract关键字修饰
2.也有具体实现功能的方法
作用:
1.作为通用方法,在父类中定义
2.要求子类必须完成这些抽象方法
实例代码:
public abstract class Person{
String name;
int age;
public abstract void test();//抽象方法
}
抽象类不可以创建对象,但是抽象类是可以有构造方法的。这句话怎么理解;
请看如下代码:
//抽象类
public abstract class Person{
String name;
int age;
//这里是抽象类的构造方法
public Person(){
System.out.println("抽象类构造方法");
}
}
//抽象类的子类
public class Student extends Person{
//子类构造方法
public Student(){
System.out.println("子类构造方法!");
}
public static void main(String[] args){
//创建子类对象
Student stu = new Student();
}
}
结果如下图:
二、接口
接口是结构设计工具,解耦合,隔离实现。定义接口的关键字是interface,接口中
只能定义常量和抽象方法,接口没有构造方法。子类可以实现多个接口,
若实现多个接口,接口之间用逗号隔开。如果子类要实现某个接口就必须
实现该接口中所方法,否则要声明为抽象类。实现接口的关键字implements。
接口:
1.定义接口关键字:interface
2.实现接口关键字:inplements
抽象方法:
1.接口中的方法都是抽象方法
2.可以省略public abstract修饰,默认就是public abstract
常量:
1.接口中只能定义常量
2.可以省略 public static final,这三个关键字是默认存在的
代码如下:
//接口
public interface Person {
//常量默认省略了public static final
String NAME="张三";
int AGE=20;
//抽象方法,默认省略了public abstract
void test();
}
//实现Person接口的子类
public class Student implements Person{
String name;
int age;
@Override
public void test() {
System.out.println("接口子类----测试");
}
public static void main(String[] args) {
Student stu = new Student();
stu.test();
//使用Person接口中的NAME常量
stu.name = Person.NAME;
//使用Person接口中的AGE常量
stu.age = Person.AGE;
System.out.println("学生姓名:"+stu.name+"\n学生年龄:"+stu.age);
}
}
这里也上图一张:
是结构设计工具,解耦合,隔离实现