继承的概念:继承的思想就是基于已存在的类构建新类,继承的意义是代码重用,继承在oop(面向对象)中不可或缺。
从其它类导出的类叫子类,被导出的类叫父类,父类更抽象,子类更具体
在Java中,除了object类之外,所有类都是子类,都只有唯一的父类;创建一个类总是在继承,如果直接创建一个类,则他的父类默认是object。
Java语言中,用extends关键字来表示一个类继承了另一个类,如下:
package wang;
class Student
{
int age;
String name;
double score;
void putS()
{
System.out.println("学生你好");
}
}
class People extends Student
{
int temp;
void eat()
{
System.err.println("我是人");
}
}
public class Test {
public static void main(String[] args) {
Student stu1 = new Student();
People p = new People();
stu1.putS();
p.putS();
}
}
super关键字的特点:
super和this关键字特点类似:super代表的是父类对象的引用;当子父类的成员出现同名时,可以通过super来区分;子类的构造方法中,通过super关键字调用父类的构造方法(经常用在这里)。
这里有一个比较混乱的概念,关于有参无参的子父类之间是如何调用的推荐以下链接(70条消息) Java继承中父类和子类构造函数的问题_zx33699659的博客-CSDN博客_java中子类继承父类构造函数
关于子父类的访问权限:父类的私有属性和方法是不会继承给子类的。
方法重写是 指子类可以根据需要对从父类继承来的方法进行改写,是多态机制的前奏。注意点:
1、重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值 |
2、重写方法不能比被重写方法有更严格的访问权限 |
3、父类中的私有方法,不能被重写 |
4、在子类重写的方法中继续调用父类被重写的方法可以通过super.函数名获取 |
package wang;
class Student
{
int age;
String name;
void putS()
{
System.out.println("学生你好");
}
}
class People extends Student
{
int score;
public void putS()//第一个(参数、名称)&第二个(权限)
{
super.putS();//第四个注意点
System.out.println("子类:学生你好");
}
}
public class Test {
public static void main(String[] args) {
Student stu1 = new People();
stu1.putS();
}
}
如果对父类的私有方法进行重写,则会导致该子类有新建一个与父类同名的方法。即父类中的私有方法不能被重写