文章为自己的简单理解,其他细节就不展开了。(懒)
目录
前言
抽象类和接口是java中非常重要的知识点
一、抽象类的概述
当我们在做子类共性功能抽取时,有些方法在父类中并没有具体的体现,这个时候就需要抽象类了!
在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类!
二、抽象类的特点
-
抽象类和抽象方法必须使用 abstract 关键字修饰
//抽象类的定义 public abstract class 类名 {} //抽象方法的定义 public abstract void eat();
-
抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
-
抽象类不能实例化
-
抽象类可以有构造方法
-
抽象类的子类
要么重写抽象类中的所有抽象方法
要么是抽象类
三、抽象类的案例
-
代码实现
-
动物类
public abstract class Animal { public void drink(){ System.out.println("喝水"); } public Animal(){ } public abstract void eat(); }
-
猫类
public class Cat extends Animal { @Override public void eat() { System.out.println("猫吃鱼"); } }
-
狗类
public class Dog extends Animal { @Override public void eat() { System.out.println("狗吃肉"); } }
-
测试类
public static void main(String[] args) { Dog d = new Dog(); d.eat();//狗吃肉 d.drink();//喝水 Cat c = new Cat(); c.drink();//喝水 c.eat();//猫吃鱼 //Animal a = new Animal(); //a.eat(); }
-
四、final关键字
-
fianl关键字的作用
-
final代表最终的意思,可以修饰成员方法,成员变量,类
-
-
final修饰类、方法、变量的效果
-
fianl修饰类:该类不能被继承(不能有子类,但是可以有父类)
-
final修饰方法:该方法不能被重写
-
final修饰变量:表明该变量是一个常量,不能再次赋值
-
变量是基本类型,不能改变的是值
-
变量是引用类型,不能改变的是地址值,但地址里面的内容是可以改变的
-
举例
public static void main(String[] args){ final Student s = new Student(23); s = new Student(24); // 错误 s.setAge(24); // 正确 }
-
-
五、接口的概述
-
接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用。
-
Java中接口存在的两个意义
-
用来定义规范
-
用来做功能的拓展
-
六、接口的特点
-
接口用关键字interface修饰
public interface 接口名 {}
-
类实现接口用implements表示
public class 类名 implements 接口名 {}
-
接口不能实例化
我们可以创建接口的实现类对象使用
-
接口的子类
要么重写接口中的所有抽象方法
要么子类也是抽象类
七、接口的成员特点
成员特点
-
成员变量
只能是常量 默认修饰符:public static final
-
构造方法
没有,因为接口主要是扩展功能的,而没有具体存在
-
成员方法
抽象方法
默认修饰符:public abstract
默认方法(default)
静态方法(static)
私有方法(private)
八、代码演示
public interface Inter { public static final int NUM = 10; public abstract void show(); }
class InterImpl implements Inter{ public void method(){ // NUM = 20; System.out.println(NUM); } public void show(){ } }
public class TestInterface { public static void main(String[] args) { System.out.println(Inter.NUM);//10 } }
-
接口
-
实现类
-
测试类
九、类和接口的关系
-
类与类的关系
继承关系,只能单继承,但是可以多层继承
-
类与接口的关系
实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
-
接口与接口的关系
继承关系,可以单继承,也可以多继承
总结
抽象类和接口普遍存在于java中,许多东西都离不开他俩