Java 抽象类和接口的认识
·
一.抽象类
1.抽象类的框架
public abstract class Father{
成员变量
抽象方法(不能有方法体也就是没有{})
具体方法
}
public class Son extends Father{
}
①成员变量
private String name;
protected int age;
public String type;
不可以用abstract来定义成员变量
②抽象方法
抽象方法不能有方法体,只能写成
public abstract void eat();
后面是没有{}方法体的,相当与跟子类说有了这个框架,要求子类必须进行方法重写来使用该方法
强制要求子类使用所有抽象方法
③具体方法
// 具体方法 - 有默认实现,但子类可以重写
public void sleep() {
System.out.println(name + "在睡觉"); // 默认实现
}
具体方法不能使用abstract。
具体方法没有强制要求在子类中使用,可以选择性的使用或者不用。
具体方法可以默认实现(也就是输出父类)
具体方法可以选择性的进行方法重写,来输出想要的子类 。
(包含抽象方法和具体方法(选择性))
④抽象类不能直接实例化
2.super关键字(部分)
①定义
super.sleep() 就是告诉Java:
"先执行一下我爸爸(父类)的那个sleep方法"
②例子
举一个可以使用super来实现父类和子类的输出(父类的默认实现和子类的方法重写)
利用super来先执行父类
public abstract class Animal {
public void eat() {
System.out.println("动物在吃东西");
}
}
public class Cat extends Animal {
@Override
public void eat() {
super.eat(); // 调用父类的eat方法
System.out.println("猫在吃鱼"); // 子类自己的内容
}
测试:
java
public class Test {
public static void main(String[] args) {
Cat cat = new Cat();
cat.eat(); // 只调用这一句!
}
}
输出:
text
动物在吃东西 ← 父类的输出(因为super.eat())
猫在吃鱼 ← 子类的输出
二.接口
1.接口的基本框架
①接口定义
用interface
②接口继承(接口——>接口)
接口继承是说 接口继承接口,假如说接口A里面有一个抽象方法1,
然后有一个新的接口B继承(extends)了接口A,
然后添加了新的抽象方法2,
可以再接下来的类来实现B就可以用两种抽象方法1和2
接口方法:默认是 public abstract,也就是说完整的是public abstract void 吃();
③接口实现(类——>接口)
// 基础接口
interface 动物 {
void 吃();
}
// 接口继承接口
interface 宠物 extends 动物 {
void 卖萌(); // 新增方法
}
// 类实现扩展后的接口
class 狗 implements 宠物 {
public void 吃() { // 来自动物接口
System.out.println("狗吃狗粮");
}
public void 卖萌() { // 来自宠物接口
System.out.println("摇尾巴");
}
}
更多推荐



所有评论(0)