面向对象整理 抽象类
访问控制权限和package import关键字
ava中不同的包之间用import关键字导入包文件
代码块
普通代码块
构造代码块
静态代码块
普通的代码块用{},括号中式一个变量的生存周期,定义在括号中的变量叫做局部变量,定义在整个文件上面的叫做全局变量,语句是依次执行。
构造代码块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。
静态代码块:在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行"。
内部类:定义在一个类中的类叫做内部类,作用是内部类和外部类之间可以轻松的进行私有属性的访问。
继承
定义:子类可以继承父类的属性和方法
注意:只可以单继承,私有private不可继承。
继承只可单一继承。
使用extends关键字
对一个类中已有的方法进行改写的过程叫做覆写。
基于构造方法,在子类中无法实例化父类中的属性和方法,要使用super()关键字来实例化父类中的属性和方法。
final关键字(终结,完结)
1.使用final声明的类不能被继承(太监类)
2使用final声明的方法不能被子类覆写。
3使用final声明的变量不能被修改,可看做常量
一般final关键字和static一起使用,定义一个不可改变的固定值。
抽象类
定义:含抽象的方法的类成为抽象类,抽象类不能被实例化。
注意:
1包含一个抽象方法的类就是抽象类
2抽象类或抽象方法使用abstract修饰。
3抽象方法只需要声明,不需要实现。
4抽象方法被子类继承是,必须重写全部抽象方法。
5抽象类不能被实例化。
接口
定义:特殊的“抽象类”,没有普通方法,由全局常量和公共的抽象方法组成。
JDK1.8增强接口定义,可以定义普通变量和普通方法。
使用interface关键字,abstract可以省略
可以同时实现多个接口(解决了不能多继承的问题)
可以同时继承(extends)和实现(implements),先继承后实现
接口可以继承接口,且可以同时继承多个接口
interface x extendsA,B{}
接口中不能有构造方法
多态
多态的最终目的是为了参数的统一,统一参数的数据类型
多态必须基于继承
1方法的重载和重写
2父类引用指向子类实例
对象转型
向上转型:子类对象-父类对象(安全)自动转换
向下转型:父类对象-子类对象(不安全)强制转换
例
Person x=new Student(); Person person=new Person(); Student student=new Student(); //向上转型 person=student; //向下转型 student=(Student)person; Employee employee=new Employee(); employee=(Employee)person;