类的继承基础篇

继承

继承:就是子类继承父类的属性和方法,使得子类对象具有与父类相同的属性、相同的方法。子类可以直接访问父类中的非私有的属性和非私有方法。

继承的好处:

  1. 提高代码的复用性。
  2. 类与类之间产生了关系,是多态的前提。

继承的格式:

通过extends关键字,可以声明一个子类继承另外一个父类,定义格式如下:

class 父类 {
	... ...
}
class 子类 extends 父类 {
	... ...
}

继承后的特点——成员变量

  1. 成员变量不重名
    如果子类父类中出现不重名的成员变量,这的访问是没有影响的。
  2. 成员变量重名
    如果子类父类中出现重名的成员变量,这是的访问是有影响的。代码如下:
class Fu {
		//Fu类中的成员变量
		int num = 5;
		}
class Zi extends Fu {
		//Zi类中的成员变量
		int num = 6;
		public void show() {
			//访问父类中的num
			System.out.println("Fu num" + num);
			//访问子类中的num
			System.out.println("Zi num" + num);
			}
		}
class ExtendsDemo {
		public static void main(String[] args) {
			//创建子类对象
			Zi z = new Zi();
			//调用子类中的show方法
			z.show();
			}
		} 
		演示结果
		Fu num = 6
		Zi num = 6

子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字,修饰父类成员变量,子类方法需要修改,代码如下:

class Zi extends Fu {
	// Zi中的成员变量
	int num = 6;
	public void show() {
		//访问父类中的num
		System.out.println("Fu num=" + super.num);
		//访问子类中的num
		System.out.println("Zi num=" + this.num);
	}
} 
演示结果:
Fu num = 5
Zi num = 6

继承之后成员变量的特点

父子类成员变量不重名:无任何影响
父子类成员变量重名:遵守就近原则
就近原则:首先先在局部位置查找,如果找到了就直接使用,如果没有找到,就去子类成员位置查找,如果子类成员位置有就直接使用,如果没有找到,就去父类的成员位置查找,如果找到了就直接使用,如果找不到,就报错。
如果在子类的方法中需要同时访问父子类同名的成员变量:
访问父类: super.成员变量名
访问子类: this.成员变量名

继承后的特点——成员方法

  1. 成员方法不重名
    如果子类父类中出现不重名的成员方法,这时的调用是没有影响的。对象调用方法时,会现在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若不存在就会执行父类中相应的方法。
  2. 成员方法重名----重写(override)
    如果子类父类中出现重名的成员方法,这时的问是一种特殊情况,叫做方法重写 (Override)。
    方法重写 :子类中出现与父类一模一样的方法时(返回值类型方法名****和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。代码如下:
class Fu {
	public void show() {
		System.out.println("Fu show");
	}
}
class Zi extends Fu {
	//子类重写了父类的方法
	public void show() {
		System.out.println("Zi show");
	}
}
public class ExtendsDemo02{
	public static void main(String[] args) {
		Zi z = new Zi();
		//子类中有show方法,只执行重写后的show方法
		z.show(); 
	}
}
演示结果:
Zi show

继承后成员方法的特点

父子类出现不重名的成员方法,无任何影响
父子类出现重名的成员方法,会优先调用子类中定义的方法

继承的特点

  1. java只支持单继承,不支持多继承。
//一个类只能有一个父类,不可以有多个父类。
class C extends A{}         //ok
class C extends A,B...     //error
  1. java支持多层继承。
calss A{}
class B extends A{}
class C extends B{}
  1. 子类拥有父类的成员变量和成员方法
  2. 子类只能直接访问父类的非私有成员,不能直接访问私有成员(成员变量和成员方法),间接访问私有成员:
    1、 访问父类的而私有成员变量 通过set\get方法
    2、访问父类的私有成员方法 通过其他公共的方法
以上就是对于类的继承的一些概念和总结,适合新手无基础的准程序员进行参考
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值