Java--继承(extends)

继承的好处
   * a:提高了代码的复用性
   * b:提高了代码的维护性
   * c:让类与类之间产生了关系,是多态的前提
继承的弊端
   * 类的耦合性增强了。
   * 开发的原则:高内聚,低耦合。
   * 耦合:类与类的关系
   * 内聚:就是自己完成某件事情的能力

Java中类的继承特点
   * a:Java只支持单继承,不支持多继承。(一个儿子只能有一个爹)
   * 有些语言是支持多继承,格式:extends 类1,类2,...
   * b:Java支持多层继承(继承体系)
案例演示
   * Java中类的继承特点
   * 如果想用这个体系的所有功能用最底层的类创建对象
   * 如果想看这个体系的共性功能,看最顶层的类

继承的注意事项
   * a:子类只能继承父类所有非私有的成员(成员方法和成员变量)
   * b:子类不能继承父类的构造方法,但是可以通过super(马上讲)关键字去访问父类构造方法。

   * c:不要为了部分功能而去继承


this和super都代表什么
   * this:代表当前对象的引用,谁来调用我,我就代表谁
   * super:代表当前对象父类的引用
this和super的使用区别
   * a:调用成员变量
   * this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
   * super.成员变量 调用父类的成员变量
   * b:调用构造方法
   * this(...) 调用本类的构造方法
   * super(...) 调用父类的构造方法
   * c:调用成员方法
   * this.成员方法 调用本类的成员方法,也可以调用父类的方法
   * super.成员方法 调用父类的成员方法
子类中所有的构造方法默认都会访问父类中空参数的构造方法
  为什么呢?
   * 因为子类会继承父类中的数据,可能还会使用父类的数据。
   * 所以,子类初始化之前,一定要先完成父类数据的初始化。
   * 每一个构造方法的第一条语句默认都是:super() Object类最顶层的父类。

class Extends{
	public static void main(String[] args){
		Son s = new Son();
		s.setName("李四");

		System.out.println("--------------------------");
		Zi z = new Zi();
		/*
		  1、jvm调用了main方法,main进栈
		  2、遇到Zi z = new Zi();会先将Fu.class和Zi.class分别加载进内存,在创建对象,
		  当Fu.class加载进内存,父类的静态代码块会随着Fu.class一起加载,当Zi.class加载
		  进内存,子类的静态代码块会随着Zi.class一起加载第一个输出,静态代码块Fu,第二个
		  输出静态代码块Zi
		  3、走Zi类的构造方法,因为Java中分层初始化的,先初始化父类,在初始化子类,所以先走
		  的父类,但是执行父类构造时,发现父类有构造代码块,构造代码块是优先于构造方法执行的,
		  所以第三个输出构造代码块Fu,第四个输出构造方法Fu
		  4、Fu类初始化结束,子类初始化,第五个输出构造代码块Zi,构造方法Zi
		*/
	}
}

class Father{
	private String name;
	private int age;
	public Father(){
		System.out.println("Father 空参构造方法");
	}
	public Father(String name,int age){
		System.out.println("Fathe 有参构造方法");
	}
	public void setName(String name){
		this.name = name;
	}
	public String getName(){
		return name;
	}
	public void setAge(int age){
		this.age = age;
	}
	public int getAge(){
		return age;
	}
}

class Son extends Father{
	public Son(){
		super();         //系统默认加上,用来访问父类中的空参构造
		System.out.println("Son 空参构造方法");
	}
	public Son(String name,int age){
		System.out.println("Son 有参构造方法");
	}
}

class Fu {
	static {
		System.out.println("静态代码块Fu");
	}
	
	{
		System.out.println("构造代码块Fu");
	}
	
	public Fu() {
		System.out.println("构造方法Fu");
	}
}
	
class Zi extends Fu {
	static {
		System.out.println("静态代码块Zi");
	}
	
	{
		System.out.println("构造代码块Zi");
	}
	
	public Zi() {
		System.out.println("构造方法Zi");
	}
}



1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值