一、抽象类:
1.随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保持父类和子类能够共享特征,有时将一个父类设计的非常抽象,以至于它没有具体的实例,这样的类叫做抽象类
2.关键字 abstract
abstract:抽象的
abstract可以用来修饰的结构:类、方法
3.abstract修饰类:抽象类
>当我们用abstract修饰类时,此类不能实例化
>抽象类中一定有构造器,便于子类对象实例化的时候调用
>开发中,都会提供抽象类的子类,让子类对象实例化,完成相关操作
4. abstract修饰方法:
>抽象方法只有方法的声明,没有方法体
>包含抽象方法的类一定是抽象类。反之,抽象类中不一定有抽象方法
>若子类重写了父类中所有的抽象方法之后,此子类方可实例化
5 注意:
5.1.abstract不能用来修饰:属性、构造器等结构
5.2.abstract不能用来修饰私有方法、静态方法、final的方法、final的类
public class Abstract {
public static void main(String[] args)
{
Person1 p = new Person1()
{
@Override
public void run() {
// TODO 自动生成的方法存根
}
};
}
}
class Worker
{
public void Work(Person1 p)
{
}
public void run()
{
}
}
class pp
{
}
abstract class Person1
{
String name;
int age;
public Person1()
{
}
public void eat()
{
System.out.println("人吃饭");
System.out.println("人走路");
}
//抽象方法
public abstract void run();
}
abstract class Student extends Person1
{
public Student(String name,int age)
{
}
}
二、代码块
1.代码块的作用:用来初始化类或者是对象
2.代码块如果有修饰的话,只能使用static
3.分类:静态代码块vs非静态代码块
4.静态代码块
>内部可以有输出语句
>随着类的加载而执行,而且只执行一次
>作用:初始化类的信息
5.非静态代码块
>内部可以有输出语句
>随着对象的加载而执行
>每创建一个对象,就执行一次非静态代码块
>作用:可以在创建对象时,对对象的属性等进行初始化