面相对象——继承

面相对象——继承

概念

在java中继承的概念就是,为多个类将共性继续抽取书写父类(进行类的分类),子类继承父类继承父类所有非私有的属性与方法

将大量类共性(书写与行为)进行抽取定义的父类,被抽取相同属性与方法的类称之为这个类的子类,这个类则称之为所有被抽取书写与行为的类的父类

语法

使用extends关键字将子类与父类关联

修饰符 class 子类类名 extends 父类类名{方法体}

package com.yunhe.day1019;
//父类  拥有子类共性(属性、行为)
public class Father {
	public String name;
	public int age;
	
	public void sayHello(){
		System.out.println("我叫"+name+" 今年"+age+"岁");
	}
}
package com.yunhe.day1019;
//子类继承父类 可以继承父类的属性与方法
public class Son1 extends Father{
	//子类在继承父类的属性与方法外也可以额外定义自己的属性与方法
	public String color;
	
	public void study(){
		System.out.println("上学");
	}
}
package com.yunhe.day1019;

public class Test {
	public static void main(String[] args) {
		Son1 s1=new Son1();
		s1.name="子类";
		s1.age=18;
		s1.sayHello();
		
		//注意:子类继承父类是可以使用父类的属性与方法,而不是将父类的属性方法保存到自己的内存
		//当进行方法与属性的调用时,首先先去自己的内存空间查找,如果没有根据继承查找父类进行使用
		
		Son1 s2=new Son1();
		s2.name="子类2";
		s2.age=19;
		s2.sayHello();
		
		//不同对象会创建不同的父类对象保存数据
		//在创建子类对象时也会创建对应的父类对象	
	}
}

Object类

Java的继承形式被称为单继承(single inheritance),因为每一个Java类都只能有一个超类。所有类的共同基类是Object类

Object是所有类的父类,所有的类都直接或间接的继承于Object

子类创建对象原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YVkFwyyD-1605007712376)(img\image-20201019115114975.png)]

super关键字

super用于指代父类对象,在子类中调用父类的方法或属性

调用父类构造方法

super(参数列表)

调用父类方法

super.方法名(参数列表)

调用父类属性

super.属性名

在调用父类方法与属性时使用与this类似,只有在子类中存在于父类相同的方法与属性时使用super进行区分,否则可以直接使用属性或方法进行操作

方法的重写

​ 发生在子类中,子类从父类继承的方法不能满足子类的功能需求时,使用方法的重写,将从父类继承的方法重写

在子类中创建与父类修饰符 返回值类型 方法名 参数列表都相同但方法体不同的方法

方法重写的规则:

要求子类修饰符范围必须大于或等于父类

返回值 方法名 参数列表必须一致

在重写的方法上加注释@Override 这样在进行方法重写时,系统会最书写的格式进行检查

@Override重写注释

用于对其标注的方法进行重写格式的验证

重写Override与重载Overload的区别

1.书写位置的区别

重载发生在本类中,重写发生在继承过程子类中

2.方法访问权限修饰符的区别

重载修饰符可以为任意修饰符,重写修饰符必须大于或等于父类修饰符

3.返回值类型的区别

重载返回值类型可以为任意类型,重写返回值类型与父类必须相同

4.方法名与原方法(父类方法)必须一致

5.参数列表的区别

重载参数列表必须不同,重写参数列表个数、顺序、类型必须全部相同

final关键字

修饰变量

修饰全局变量:

修饰的变量必须进行初始化赋值,不能修改

修饰局部变量:

修饰的变量不使用可以不赋值,但是只能赋值一次,使用必须赋值

修饰类

被final修饰的类不能被继承,但是可以创建对象,并且创建对象的属性与方法没有影响,final修饰类只影响类的继承

修饰方法

被final修饰的方法可以被继承但是不能被重写,final修饰方法只影响方法继承后的重写

修饰对象

与修饰变量相同,保存的相应对象的地址不能修改,但是对象对应属性可以进行修改。

总结:

1)子类继承父类,继承非私有的属性与方法

2)使用父类的属性与方法存储在父类对象

3)在创建子类对象时会为其创建一个对应的父类对象

4)子类除了可以继承父类属性方法外也可以定义额外的属性与方法

5)每个类只能有一个父类(java中的继承是单继承的)

6)如果一个类没有显式的继承任何类,那么这个类默认继承Object类

7)final修饰表示最终的对当前影响不大,影响的是后续操作

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值