Java继承

使用extends关键字表示继承。

Java只能单继承;

Java可以多层继承;子类可以访问父类的父类的公有成员;

子类不能直接访问父类的私有成员变量,可以通过getset方法读写;

package com.jike.extendsDemo;

class People{
	private int age;
	public void setAge(int age) {
	this.age=age;
	}
	public int getAge() {
		return age;
	}
}
class Worker extends People{
	public void tell() {
		System.out.println(getAge());
	}
}
public class test01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Worker worker=new Worker();
		worker.setAge(20);;
		worker.tell();
	}

}

 输出:

20

在子类对象实例化之前,必须先调用父类中的构造方法,之后调用子类构造方法。

package com.jike.extendsDemo;
class Father{
	private int age;
	private String name;
	public Father() {
		System.out.println("父类构造方法");
	}
}
class Son extends Father{
	public Son() {
		System.out.println("子类构造方法");
	}
}
public class test02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Son son=new Son();
	}
}

 输出:

父类构造方法
子类构造方法

子类中可以重写父类中的方法,重写定义:子类的方法和父类的方法名相同、参数相同、返回值类型相同。

package com.jike.extendsDemo;
class A{
	public void tell() {
		System.out.println("我是tell方法");
	}

}
class B extends A{
	public void tell() {	//重写父类中的方法
		System.out.println("重写tell方法");
	}
}

public class test03 {
	public static void main (String[] args) {
		B b=new B();
		b.tell();
	}
}

 输出:

重写tell方法

 并没有执行父类中的tell方法。

使用super关键字可以在子类的方法中执行父类的方法。

super:强行调用父类的方法的执行。

package com.jike.extendsDemo;
class A{
	public void tell() {
		System.out.println("我是tell方法");
	}

}
class B extends A{
	public void tell() {	//重写父类中的方法
		super.tell();
		System.out.println("重写tell方法");
	}
}

public class test03 {
	public static void main (String[] args) {
		B b=new B();
		b.tell();
	}
}

 输出:

我是tell方法
重写tell方法

 执行了父类中的tell方法。

被子类重写的方法不能拥有比父类方法更加严格的访问权限。(一般父类与子类重写方法的访问权限相同)

三种权限:private<default<public

例如:如果父类的方法是default类型的,那么子类中重写的方法只能是default或者public类型。


重写与重载的区别:

原文地址:https://www.cnblogs.com/zhhy236400/p/10442120.html