一、abstract关键字
abstract 只能修饰类和方法
语法格式
abstract class 类名 {
普通方法:
public void 方法名() {
方法体;
}
抽象方法:
public abstract void 方法名();
}
注意事项:
1、如果一个类的被abstract修饰,这就叫抽象类
2、抽象类中可以有普通的成员方法和抽象方法
3、抽象类中没有方法体,是不完整的方法
4、抽象类不可以实例化
5、写一个类去继承抽象类
6、在子类中重写抽象类中所有的抽象方法
7、非抽象类可以重写,也可以不重写
8、一个抽象可以继承另外一个抽象类
9、抽象类可以继承非抽象类
案例:
abstract class Person {
public void eat () {
System.out.println("吃大盘鸡");
}
abstract public void work();
}
class Man extends Person {
@Override
public void work() {
System.out.println("吃大盘鸡拌面");
}
}
public class Demo1 {
public static void main(String[] args) {
Man man = new Man();
man.eat();
}
}
二、final关键字
用法:
1、final可以修饰成员变量:使用final修饰成员变量,一定要初始化,不能修该;
2、final可以修饰局部变量:使用final修饰局部变量,可以先不赋值,使用之前的赋值,但是一旦赋值不可以修改。
3、final可以修饰成员方法:final修饰成员方法不可以被重写
4、final可以修饰一个类:final修饰的类不可以被继承
5、final可以修饰对象的引用:修饰对象引用一旦被赋值,就不可以改变。
案列:
class Person {
final String name = "狗蛋";
public void test () {
final int i;
i = 30;
System.out.println(i);
}
public final void eat () {
System.out.println("吃饭");
}
}
class Man extends Person {
@Override
public void eat() {
System.out.println("吃的多");
}
}
public class Demo1 {
public static void main(String[] args) {
final Person person = new Person();
System.out.println("Person:" + person);
Person person1 = new Person();
System.out.println("Person1:"+ person1);
System.out.println(person);
}
}
三、interface 接口
语法格式:
interface 接口的名字{
成员变量;
成员方法;
}
实现接口使用关键字implements
注意事项:
1、使用关键字interface声明一个接口
2、接口下面可以有属性,但是是static和final修饰的属性。
3、接口下面的全部都是抽象方法,不带方法体;
4、jdk1.8以后是可以有默认(default)的方法的,这个默认方法带有方法体
5、接口下面没有构造方法,不能被实例化
6、去使用一个普通的类去实现这个接口,使用关键字implements
7、一定在实现类中去实现所有的抽象方法
8、一个普通的类可以实现多个接口,弥补了单继承的局限性
9、一个接口可以去继承另外一个接口
案例:
interface Person {
String NAME = "狗蛋";
public void eat ();
}
class Child implements Person {
@Override
public void eat() {
System.out.println("吃大盘鸡");
}
}
public class Demo1 {
public static void main(String[] args) {
Child child = new Child();
child.eat();
}
}