JAVA三大特性之 继承详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41548307/article/details/83932449

类和类之间的常见关系。

既然继承是描述类和类之间的关系,就需要先来了解类和类之间的常见关系

​​​​​​​现实生活的整体与部分

举例说明

现实生活

学生   是人  

狗     是动物

球队 包含 球员 整体与部分的关系,部分可以删除和增加

笔记本包含 cpu 整体与部分的关系,部分不可以删除和增加

航母编队 包含(航母 护卫舰 驱逐舰 舰载机 核潜艇)

​​​​​​​java中的类与类关系

java中的类关系

is a 关系 (学生是人)

has a 整体与部分

 

​​​​​​​继承

描述一个学生类

姓名年龄学号属性,学习的方法

描述一个工人类

姓名年龄工号属性,工作的方法

描述一个人类

姓名年龄属性,说话的方法。

发现学生类和人类天生有着联系,学生和工人都是人。所以人有的属性和行为学生和工人都会有。出现类代码重复。

class Person {
	String name;
	int age;

	// 静态变量(类变量)对象和对象之间的代码重复使用静态变量
	static String country = "CN";

	Person() {

	}

	void speak() {
		System.out.println(name + ":哈哈,我是人!!!");
	}

}

// 让学生类和人类产生关系,发现学生is a 人,就可以使用继承
class Student {

	String name;
	int age;

	Student() {

	}

	void study() {
		System.out.println("姓名:" + name + "年纪:" + age + ":好好学习");
	}
}

class Worker {
	String name;
	int age;

	void work() {
		System.out.println(name + ":好好工作,好好挣钱。");
	}

}

class Demo1 {

	public static void main(String[] args) {
		Student s = new Student();
		s.name = "jack";
		s.age = 20;
		s.study();

		Worker w = new Worker();
		w.name = "rose";

		w.work();
	}
}

问题:

如果没有继承,出现类和类的关系无法描述

如果没有继承,类和类之间有关系会出现类和类的描述代码的重复。

​​​​​​​继承特点

1,描述类和类之间的关系

2,降低类和类之间的重复代码

3,降低对象和对象之间的代码重复使用静态变量

4,降低类和类之间的代码重复使用就继承

​​​​​​​extends关键字

继承使用extends关键字实现

1:发现学生是人,工人是人。显然属于is a 的关系,is a就是继承。

2:谁继承谁?

学生继承人,发现学生里的成员变量,姓名和年龄,人里边也都进行了定义。有重 复代码将学生类的重复代码注释掉,创建学生类对象,仍然可以获取到注释的成员。这就是因为继承的关系,学生类(子类)继承了人类(父类)的部分。

class Person {
	String name;
	int age;

	// 静态变量(类变量)对象和对象之间的代码重复使用静态变量
	static String country = "CN";

	Person() {

	}

	void speak() {
		System.out.println(name + ":哈哈,我是人!!!");
	}

}

// 让学生类和人类产生关系,发现学生is a 人,就可以使用继承
class Student extends Person {

	Student() {

	}

	void study() {
		System.out.println("姓名:" + name + "年纪:" + age + ":好好学习");
	}
}

class Worker extends Person {

	void work() {
		System.out.println(name + ":好好工作,好好挣钱。");
	}

}

class Demo1 {

	public static void main(String[] args) {
		Student stu = new Student();
		stu.name = "jack";
		stu.age = 20;
		stu.study();
		stu.speak();
		System.out.println(stu.country);
		System.out.println(Student.country);

		Worker worker = new Worker();
		worker.name = "rose";
		System.out.println(worker.country);
		worker.work();
		worker.speak();

		System.out.println();
	}
}

继承细节

1:类名的设定,被继承的类称之为父类(基类),继承的类称之为子类

2:子类并不能继承父类中所有的成员

3:父类定义完整的成员 静态成员,非静态,构造方法。静态变量和静态方法都可以通过子类名.父类静态成员的形式调用成功。

4:所有的私有成员不能继承,private修饰的成员。

5:构造函数不能被继承

 

如何使用继承

1:不要为了使用继承而继承。工人和学生都有共性的成员,不要为了节省代码,让工人继承学生。

/*
如何使用继承:验证是否有 is  a 的关系
 例如:学生是人, 小狗是动物
 注意:不要为了使用某些功能而继承,java只支持单继承
 */
class DK {

	void Ip4S() {
		System.out.println("好玩");
	}
}

class BGir extends DK {

}

class Demo {

	public static void main(String[] args) {

		new BGir().Ip4S();

	}
}

猜你喜欢

转载自blog.csdn.net/qq_41548307/article/details/83932449