抽象的关键字是abstract,可以用来修饰类(抽象类),还可以修饰方法(抽象方法)。
1 //抽象类 2 public abstract class Animal{ 3 //抽象方法 4 public abstract void eat(); 5 //抽象方法 6 public abstract void sleep(); 7 } 8 9 public class Dog extends Animal{ 10 @Override 11 public void eat(){ 12 System.out.println("狗吃骨头"); 13 } 14 15 @Override 16 public void sleep(){ 17 System.out.println("狗在窝里睡"); 18 } 19 }
1.抽象类中可以有抽象方法,也可以有非抽象方法
2.有抽象方法的类,必须是抽象类
3.抽象方法不能写方法体
4.具体的子类继承抽象类,必须重写父类中所有的抽象方法。否则就让子类继续抽象
5.抽象类不能创建对象
在一个父类中定要好一些方法,有些方法是抽象的,有些方法是具体的。当子类继承父类的时候,只需要重写父类的抽象方法,完成自己的功能就可以了。
1 //作文的模板 2 public abstract class Teamplate{ 3 //写作为的方法 4 public void write(){ 5 //开头 6 System.out.println("这是作文的开头。。。"); 7 8 //正文(交给子类是完成) 9 body(): 10 11 //结尾 12 System.out.println("这是作文的结束。。。"); 13 } 14 15 //正文的方法(抽象方法) 16 public abstract void body(); 17 } 18 19 20 //写一个子类,继承Teamplate 21 public class Tom extends Teamplate{ 22 public void body(){ 23 System.out.println("这是Tom写的作文的正文"); 24 } 25 } 26 27 public class Test{ 28 public static void main(){ 29 Tom t=new Tom(); 30 t.write(); 31 } 32 }
final是最终的意思,可以用来修饰类、方法、变量
1.final修饰类,不能被继承
2.final修饰方法,不能被重写
3.final修饰变量,不能被修改(final修饰的变量,值不能被赋值一次)
如果是引用类型,指的是地址值不能被更改
代码块本质上是一对大括号,在类中的位置不同,作用也不同。
局部代码块:在方法中,用于限定变量的作用范围
构造代码块:在类中方法外,用来提取构造方法的共性代码
每次创建对象,都会先执行构造代码块,再执行对应的构造方法。
静态代码块:被static修饰的代码块,在类中方法外。用作一些初始化的操作
当使用到这个类的时候,static代码会自动执行,而且只执行一次。