文章目录
-
oop的三大高级特性
Java面相对象的三大基本特性是封装继承和多态 -
继承
继承是面向对象语言的高级特性,它的作用是简化类的设计,让子类可以直接拥有父的属性和方法,而无需重复定义
-
Java中的继承
java中只支持单继承,不支持多继承,但支持多层继承
在继承关系中,子类继承父类,子类和父类都是相对的概念;
我们可以使用 is 来判断是否可以使用继承;即子类 is 一个特殊的父类;
继承的语法是
class 子类名 extends 父类{}
-
重写方法(override):
在继承关系下,子类覆盖父类的方法; (方法名相同参数相同,返回值类型小于父类返回值) -
关于继承的小结
父类有的,子类一定有;
父类没有的,子类可以增加;
父类有的,子类可以修改(方法重写) -
子类中也可以定义一个父类中同名的属性;这种操作被称为覆盖;
-
.在子类中如何访问父类的成员;
super关键字:这个关键字代表父类对象的引用;通过super.我们可访问父类的属性及方法;
public void play(String game) {
/**
* 不停调用自己会产生栈溢出的异常
*/
// this.play("艹");
System.out.println(super.name + "正在玩" + game);
}
因此产生的异常为
Exception in thread "main" java.lang.StackOverflowError
at Student.play(Student.java:51)
at Student.play(Student.java:51)
at Student.play(Student.java:51
-
子类对象的内存结构;
Person
Student;Student s=new Student();
当我们实例化一个子类对象时,会首先在内存中创建一个父类的对象,然后再创建子类的对象,我们开发时不需要直使用父类的对象;
public class Person {
public Person() {
System.out.println("person对象已经创建成功");
}
}
public class Student extends Person{
public Student(){
System.out.println("Student对象已经创建成功");
}
}
public class Test {
public static void main(String[] args) {
Student s = new Student();
}
}
运行结果为:
person对象已经创建成功
Student对象已经创建成功
- 关于子类的构造方法;
普通方法可以继承,构造方法不能继承。但在子类的构造方法中一定要先调用父类的构造方法;如果不明确指定调用父类的哪个构造方法,将会隐式的调用父类无参的构造 方法; - 子类的构造方法可以通过super()来明确调用父类的构造方法;super()必须放在子类构造方法的第一行;并用只能调用 一次 ;