继承学习笔记

概念

将多个类的共性内容抽取放在一个独立的类中,独立类和这些类产生继承关系,就是继承关系。

继承是基于面对对象的思想,多个对象可以提炼相同点以类为模板,减少代码冗余,多个类也可以提炼共同的特征,创建一个父类,通过继承的方法减少代码冗余以及提高复用性。

优点

  1. 能提高代码复用性;
  2. 提高了代码的维护性;
  3. 让类与类之间产生联系,是多态的前提;

缺点

让类与类之间产生了耦合性,有背设计开发的低耦合,高内聚的原则;

继承的特点

子类只能单继承父类,可以多层继承。

继承 类的组成

1成员变量

2构造方法

3成员方法

继承的成员访问:

  1. 变量的访问:子类继承父类,如果子类的成员变量名称和父类的成员变量名称不一致的时候,分别访问即可,
    子类变量和名称不同时:(就近原则)
    先在本类的局部位置找,如果没有就在本类成员位置里找,没有就在父类的成员位置里找,父类成员位置都没有说明该变量不存在。
  2. 构造方法的访问:子类继承父类,不能够继承构造方法,但是可以通过Super()间接访问,子类所有的构造方法都默认有一个super();访问父类的无参构造方法。
    super代表的是父类的空间标识,this代表本类。
    由于子类继承必须先初始化父类,所以建议永远给出父类的无参构造

如果子类继承父类,父类没有无参构造方法,怎么解决

  1. 手动给出父类的无参构造方法;
  2. 子类的构造方法中,用super(xx);访问父类的有参构造方法进行初始化;
  3. 不执行子类的无参构造方法,先通过this(xx);执行本类的有参构造方法,再通过super();执行父类的有参构造方法进行初始化。

this和super的区别

this:代表对本类对象的地址值引用;

super:代表对父类空间标识(父类对象的地址值引用)

this.变量:访问本类的成员变量;

this.方法名():访问本类的成员方法;

this()/this(xx):访问本类的无参构造方法/有参构造方法;

super.变量名:访问的是父类的成员变量;

super.方法名():访问父类的成员方法;

super()/super(xx):访问父类的无参构造方法/有参构造方法;

分层初始化

和代码块的优先级

父类比子类先一步初始化;

静态代码块随类的加载而加载;

使用构造方法前先调用构造代码块;

 

class Person{
	static{
		System.out.println("Person的静态代码块") ;
	}
	public Person(){
		System.out.println("Person的无参构造方法") ;
	}
	{
		System.out.println("Person的构造代码块") ;
	}
}
class  Student extends Person{
	static{
		System.out.println("Student的静态代码块") ;
	}
	public Student(){
		System.out.println("Student的无参构造方法") ;
	}
	{
		System.out.println("Student的构造代码块") ;
	}
}
//测试类
class Test3{
	public static void main(String[] args){
			Student s = new Student() ;
			System.out.println("--------") ;
			Student s2 = new Student() ;
	}
}

输出结果:

Person的静态代码块
Student的静态代码块
Person的构造代码块
Person的无参构造方法
Student的构造代码块
Student的无参构造方法
--------静态代码块只随类的加载时加载一次,构造方法块随构造方法的调用而调用。
Person的构造代码块
Person的无参构造方法
Student的构造代码块
Student的无参构造方法

final关键字

状态修饰符,可修饰类,变量,方法,

修饰变量时,该变量是一个常量,只能被赋值一次;

修饰方法时,方法不能被重写;

修饰类时,该类不能被继承;

当不想被子类重写覆盖的父类,可以使用final关键字进行修饰

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值