java继承

文章目录

  • 一、继承
  • 二、super关键字
  • 三、方法重写(OverWrite)

一、继承

继承是面向对象程序设计语言的基石之一。
只需在新的类中产生现有类的对象 的方式叫做组合,按照现有类的类型来创建新类的方式为继承
1、在java中使用 extends关键字实现类的继承机制

class Parent {
}
class Child extends Parent {
}

类Parent为父类,Child为子类。

2、通过继承子类会自动拥有基类(父类)所有的成员变量和方法

3、一个子类只能有一个基类,一个基类可以有多个子类。就像一个儿子只能有一个父亲,但一个父亲可能会有多个儿子。故java只支持单继承,不支持多继承。,终极基类(父类)为java标准类Obiect
举例:

public class TestPerson {
	public static void main (String [] args) {
		Student s1 = new Student();
		s1.setAge(20);//调用父类方法
		s1.setName("jiajia");//父类方法
		s1.setSch("Sun school");//调用自己的方法
		System.out.println(s1.getName());
		System.out.println(s1.getAge());
		System.out.println(s1.getSch());
	}
}

class Person {
	private String name;
	private int age;
	public void setName (String name) {
		this.name = name;
	}
	public void setAge (int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public int getAge() {
		return age;
	}
}

class Student extends Person {
	private String school;
	public void setSch(String school) {
		this.school = school;
	}
	public String getSch() {
		return school;
	}
}

运行结果:在这里插入图片描述

为了便于理解,在此画一下该程序内存中的深层原理。
如图:
java继承_第1张图片
相当于new了一个Student对象s1,该对象里面又包含一个父类对象Person。(为了方便理解,我将school、name都装在了heap中,实际上字符串常量应该在date segment中)所以子类比父类大,子类对象包含一个父类对象。即创建一个子类对象的时候,该子类对象包含了一个父类对象。

我们得知道这其中的过程是怎样的:其实java会自动在子类的构造器(构造方法)中插入对父类构造器的调用。,即使你不创建子类的构造器,java也会为你合成一个默认的构造器,该构造器同样的会调用基类构造器。
但是,如果没有默认的构造方法,或者想调用一个带参数的构造方法,这个时候super关键字就派上用场了。

二、super关键字

1、调用父类的构造方法

  • 使用super();时,调用父类的无参构造方法
  • 使用super(参数列表);调用父类的有参构造方法

注意: 调用父类构造方法是子类构造方法中需要做的第一步。
java继承_第2张图片
2、调用父类中被重写的方法、变量
用一个例子来说明

class FatherClass {
    public int value;
    public void f(){
        value = 100;
        System.out.println
        ("FatherClass.value="+value);
    }
}

class ChildClass extends FatherClass {
    public int value;
    public void f() {
        super.f();//调用父类的法f()方法
        value = 200;//修改子类对象的value值
        System.out.println
             ("ChildClass.value="+value);
        System.out.println(value);
        System.out.println(super.value);//父类中的成员变量值已经从0变为100
    }
}

public class TestInherit {
	public static void main(String[] args) {
		ChildClass cc = new ChildClass();
		cc.f();
	}
}

运行结果:
java继承_第3张图片

三、方法重写(OverWrite)

当子类不满意父类中的方法时,可以重新写一遍。
在子类中可以根据需要重写从父类继承来的方法、但必须和父类的方法名、参数列表、返回类型一致。
子类中 可以 重新写 继承来的方法、但必须和父类的方法名、参数列表、返回类型一致。

你可能感兴趣的:(javase学习记录,java,intellij-idea,java-ee)