6.面向对象--继承

1.概述

概念:如果B类继承A类,那么B类将具有A类的所有方法,同时还可以扩展自己独有的方法和属性。这时把A称为"B的子类",把B称为"A的父类"。

单继承和多继承

单继承:一个子类中只有一个直接父类

多继承:一个类中有多个直接父类

java不支持多继承,多个父类有相同成员时会产生调用的不确定性,使用多态改进

代码示例:

class A {
	void show() {
		System.out.println("A run");
	}
}

class B {
	void show() {
		System.out.println("B run");
	}
}

class C extends A,B{
	new C().show();//无法确定是A还是B的show方法
}
java支持多重继承 即C继承B,B继承A

当使用一个继承体系时:

        a.查看该体系中的顶层类,了解该体系的基本功能

        b.创建体系中的最底层子类对象,完成功能的使用

2.好处

         a.提高代码复用性

         b.类与类之间产生关系,给多态提供前提

3.super关键字

当子类的成员和局部变量同名时,用this区分;当子父类中的成员变量同名时,用super区分

this代表一个本类对象的引用;super代表一个父类的空间

代码示例:

class Fu {
	int age = 40;
}

class Zi extends Fu {
	int age = 18;

	void show() {
		System.out.println("Son:" + this.age + " Father:" + super.age);
	}
}

class ExtendsDemo {

	public static void main(String[] args){
		Zi z=new Zi();
		z.show();
}

4.函数覆盖

当父类中出现和子类成员函数函数名、参数完全相同的情况,会运行子类的函数,这种现象叫做覆盖(重写)override

注意事项:

         a.子类方法覆盖父类方法时,子类权限必须大于等于父类的权限

         b.静态只能覆盖静态,或被静态覆盖

什么时候使用覆盖:

当对一个类进行子类的扩展,子类就要保留父类的功能声明,但是要定义子类中该功能的特有内容时,就用覆盖操作完成

代码示例

class Fu {
	void show() {
		System.out.println("fu show run");
	}
}

class Zi extends Fu {
	void show() {
		System.out.println("zi show run");
	}
}

public class ExtendsDemo {

	public static void main(String[] args) {
		Zi z = new Zi();
		z.show();

	}

}

5.子类的实例化过程

代码示例:

class Fu {
	Fu() {
		super();
		show();
		return;
	}

	void show() {
		System.out.println("fu show");
	}
}

class Zi extends Fu {
	int num = 8;

	Zi() {
		super();
		num = 10;
		System.out.println("zi show..." + num);
		return;
	}
}

public class ExtendsDemo {

	public static void main(String[] args) {
		Zi z = new Zi();

	}

}
图解:


初始化顺序:子类属性默认初始化>父类构造函数初始化>子类属性显式初始化

6.final关键字

特点:

a.final可以修饰类、方法和变量

b.final修饰的类不可以被继承

c.final修饰的方法不可以被覆盖

d.final修饰的变量是一个常量,只能被赋值一次

e. 内部类只能访问被final修饰的局部变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值