继承
继承:子类继承父类的属性和行为
格式:
class 父类{
}
class 子类 extend 父类 {
}
优点:
1.提高复用性
2.便于维护
3.多态的前提
特点:
1.支持单继承,多重继承(不同类继承同一个类)
//单继承
public class A {
}
public class B extend A{
}
//多重继承
public class A {
}
public class B extend A{
}
public class C extend A{
}
2.不支持多继承
//java不支持
public class A {
}
public class B {
}
public class C extend A,B{
}
3.子类只能继承父类的非私有成员方法和成员变量
4.子类不能继承父类的构造方法,可以用super关键字去访问父类构造方法
super与this关键字
super:通过super关键字可实现对父类成员的访问,用来引用当前父类的对象
this:指向自己的引用,谁调用它就代表谁
class Animal {
public void eat() {
System.out.println("吃饭");
}
}
class Dog extends Animal {
public void eat() {
System.out.println("小狗吃骨头");
}
public void eatTest() {
this.eat(); // this 调用自己的方法
super.eat(); // super 调用父类方法
}
}
public class Test {
public static void main(String[] args) {
Animal a = new Animal();
a.eat();
Dog d = new Dog();
d.eatTest();
}
}
final关键字:
1.声明类,则该类无法被继承
2.声明方法,则该方法不能被重写
3.声明变量,则该变量无法被修改,成为常量
方法重写
方法重写:子类对父类的方法实现过程进行重新编写,返回值和形参不变
//方法重写
class Animal{
public void move(){
System.out.println("动物可以移动");
}
}
class Dog extends Animal{
public void move(){
System.out.println("狗可以跑和跳");
}
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal(); // Animal 对象
Animal b = new Dog(); // Dog 对象
a.move(); // 执行 Animal 类的方法
b.move(); //执行 Dog 类的方法
}
}
特点:
1.父类私有方法,即被private修饰的方法,无法被重写
2.重写后的访问权限,不能比父类中更低,最好一样
3.声明为final的方法无法被重写
4.构造方法不能被重写
代码块
代码块:用{ }括起来的代码叫代码块
分类:局部代码块、构造代码块、静态代码块、同步代码块
局部代码块:
在方法中出现,缩短变量寿命,将变量定义在局部代码块中,可以及时结束其生命周期,释放空间
构造代码块:
在类中方法外出现,在构造方法前执行,每次调用构造都执行
静态代码块:
在类中方法外出现,用static修饰,给类进行初始化,在加载时执行,只执行一次