1.抽象类
1.1概念:本质是和父类一样的,但我们从学生出发向上走,
是不是变得越来越难以描述其具体是什么,变得越来越抽象,这就是抽象类。
—————————————————————————————————
1.2.实现
public abstract class Person{
/*里面用来实现抽象方法*/
}
对于一个抽象类到底有多抽象取决于它到底有多少子类,就有多少要实现的方法就有很多。
抽象方法和抽象类差不多,就是有子类所共有的。
public abstract class Person{
public abstract void walk();
/*抽象方法不用去具体实现,所以就不用{},直接用;结尾。*/
/*有一个抽象方法就必为抽象类,final不与抽象一起*/
}
1.3.子类继承
子类在继承是要把抽象类中的所有方法都给实现(并不是都要写内容)才行,不然会报错。
public class Student extends Person{
@Override
public void walk() {
// TODO 自动生成的方法存根
}
}
—————————————————————————————————
如果我们希望我们的程序可以多重继承,可是Java中规定一个子类有一个父类,而我们想一个子类有多个父类就需要接口。
—————————————————————————————————
2.接口
2.1.概念:一种特殊的抽象类,用interface来定义,需要用implements去实现,可以用于补充。
2.2.实现
接口在创建时会有单独的类型。其形式:
public interface Interface1 {
/**
* 1.成员变量会默认 public static final.
* 2.无构造器
*/
public abstract void sleep();
}
在使用时候:
public abstract class Person implements Interface1 {
/**
* Default constructor
*/
public Person() {
}
/**
* 这是Person原本的方法
*/
public abstract void walk();
/**
* 这是接口的
*/
public abstract void sleep();
}
然后就由子类去实现其具体功能:
public class Student extends Person{
@Override
public void walk() {
// TODO 自动生成的方法存根
}
@Override
public void sleep() {
// TODO 自动生成的方法存根
}
}
还有一种使用方法既继承(先实现)又有接口(后),当有多个接口时
用,进行分隔。:
public class Student extends Person implements Importw{
@Override
public void walk() {
// TODO 自动生成的方法存根
}
@Override
public void sleep() {
// TODO 自动生成的方法存根
}
@Override
public void Show() {
// TODO 自动生成的方法存根
}
@Override
public int ShowInfo() {
// TODO 自动生成的方法存根
return 0;
}
}
2.3.使用时可以用new去测试接口类的方法用到了多态:
public class Test3 {
public static void main(String[] args) {
/*当我们去创建Student类型的对象,对于引用变量i,
*它只能访问它本身类型中的方法。
*而存在同名方法,使用的为实际实例的对象。
*/
Importw i=new Student();
}
}
3.总结
接口通常和抽象类一同使用。