贴心提示:
快捷方式:输入一些关键字,在按键alt+?键就可以补齐(在eclipse中输入代码时)。
三个非访问控制符:static ,final ,abstract.
访问控制符:public ,protected,private.
abstract
注:abstract类 重写方法是类继承(extends)抽象类,再重写。
abstarct可以修饰类和方法。
1.修饰类
定义:abstract修饰的类是抽象类,即有些内容(方法)还没有定义完整,这样的类只是将类头部分定义完整了,也就是类的外观有了(abstract class father{}),在抽象类中可以没有抽象方法。
注:1.抽象类一般是父类,即它可以被其他的类继承,但是不能实例化抽象类。
2.abstract 和final相克,不能同时修饰一个类。
abstract class father{}
class son extends father{
void son(){
System.out.println("son");
}
}
public class Test1{
public static void main( String[] argps){
son s = new son();
s.son();
}
}
2.修饰方法
abstract修饰的方法是抽象方法,即只定义了方法头部,没有方法体(即没有大括号)。
abstract void tt();
3.注意
(1)抽象类不一定含有抽象方法,但含有抽象方法的一定是抽象类(即如果一个类含有抽象方法,则此类必须定义为抽象类)。
(2)如果子类没有实现抽象类的所有方法,则子类就定义为抽象类。
interface接口类也是一种抽象类,在接口中定义抽象方法,在类中实现接口然后重写方法。
什么时候使用抽象类呢?
interface 接口类
注:interface类重写方法是类实现(implements)接口类,再重写方法。
接口是一个特殊的抽象类。
java中类之间的继承关系是单重继承,即一个类只有一个直接父类,因此形成的类之间的继承结构是树形结构。
而java中可以用接口弥补它的单重继承,接口之间是多重继承的,即一个接口可以有多个父接口(多个父接口要用逗号隔开),而且一个类可以实现多个接口。
//一个接口可以有多个父接口(多个父接口要用逗号隔开),即接口之间也有继承关系。
interface first{
int a = 1;
void f1();
}
interface second{
void s1();
}
interface third extends first,second{
void t1();
}
//一个类可以实现多个接口
class c1 implements first,second{
public void f1(){
System.out.println("a=”+a);
}
public void s1(){}
}
1.定义
interface 接口名{
接口体(一个抽象方法)
}
(1)接口中的方法是抽象方法,即没有方法体(没有大括号),都是public,abstract修饰的;
接口中只定义常量,不允许定义变量,都是public,static,final修饰的,在接口中定义方法时,方法的修饰符和变量的修饰符可以省略。但是在类实现接口中的方法修饰符不可以省略。
2.实现-implements
class 类名 implements 接口名{
//所有接口的方法重写(方法修饰符public 不可以省略。)
}
(1)类实现接口意味着先继承接口,然后再重写方法体 。
如果保证这个类不是抽象类,则要实现每个接口的每一个方法(重写抽象方法)。
一个类实现多个接口,多个接口之间用逗号隔开。
(2)extends必须写在implements前面。
class Bird extends Animals implements Flyer{
}