继承
Java oop的另一个重要的知识点,是Java面向对象编程技术的一块基石,它允许创建分等级层次的类。继承是一种高级封装,而封装就是OOP的一个核心思想;
继承就是子类继承父类的特征和行为,这就要求在创建父类的特征时要能概括所有子类。反过来就是说子类有父类的特征,而每个子类又可以有自己不同于父类的特征。
注意:每个子类只能继承一个父类(后面要说的接口就可以实现多个)
(1)子类继承父类其实就是在子类创建时,在子类对象中创建了一个父类的对象。(这个对象是不外显的)
(2)子类不可以继承父类的一些内容
①私有的 private修饰的内容
②构造方法 Constructor (子类中只是调用,不是继承)
③非同包父类受保护类型 (可以用producted访问)
(3)访问修饰符和包进行的访问权限控制
(4)在系统默认的调取顺序中:
构造方法<普通的代码块<静态的代码块
输出是按:
父类静态代码块
子类静态代码块
父类普通代码块
父类构造方法
子类普通代码块
子类构造方法
(5)static:(静态)
①被static修饰的属性和方法称为类属性与类方法,无须对象,通过类名就可以访问。
②但是static在JVM 启动装载字节码文件过程中就会先创建所有的静态内容。当JVM关闭时static内容才会销毁。(存在时间在长,占用空间,这不符合OOP的思想)
③只有在使用频次高,且当前工程中许多类要使用时,我们才会选择将这个内容设定成静态。
④注意:静态方法只能访问静态属性和静态方法
(6)重写、重载
①重载:同一类中名称相同参数不同的方法
public void student(int a,boolean b){}
public void student(int a ){}
参数不同指的是参数列表的不同,在参数数量相同时,看参数类型;在参数类型相同时就看参数的数量。
②重写:子类重写父类同名、同参、同返回值的方法。
class Animal{
public void move(){
System.out.println("动物可以移动");
}
}
class Dog extends Animal{
public void move(){
System.out.println("狗可以跑和走");
}
}
这里的子类继承了父类,在调用move()方法时,参数列表相同(都为空),但方法中的代码块是不同的。