JAVA学习第十一课(继承)

继承:(extends)

很多类,但是有一些成员,都是重复的,所以为提供复用性,把重复的代码抽取出来,就应用了继承

1.提高了代码的复用性

2.让类与类之间产生了关系,继承给多态提供了前提,没继承就没多态

class MAN
{
	String name;
	int age;
}
class student extends MAN //MAN是student的基类,student是MAN的子类
{
	void study()
	{
		System.out.println(name+"正在学习"+age);
	}
}
class teacher extends MAN
{
	void work()
	{
		System.out.println(name+"正在工作"+age);
	}
}
public class Main
{

	public static void main (String[] args)
	{
		student BLF = new student();
		BLF.name = "BLF2";
		BLF.age = 20;
		BLF.study();
	}
} 

概念理解图:

单继承和多继承

JAVA支持单继承,不直接支持多继承,但是在C++的多继承机制上进行了改良。

定义:

1、单继承:一个子类只能有一个直接父类。

class A extends B ,B extends C;

2、多继承:一个子类可以有多个直接父类,(java中不允许)进行了改良。

class A extends B;A extend C;

多继承的优点:

类A 中有一些变量,类B中有一些东西,如果C继承了A和B,那么C就同时拥有了A,B的东西

C++多继承的缺点:

见代码:

#include <iostream>
using namespace std;
class A
{
public :
	void show()
	{
	cout<<"sd"<<endl;
	}
}
class B
{
public :
	void show()
	{
	cout<<"sssd"<<endl;
	}
}
class C :public A,public B//A,B的show都是同一个函数名
{

}
C BLF;
int main()
{
	BLF.show();//此处C++代码的多继承,就会出现混乱,必须让show,show1、show2,名字保证不一样,才可以
	return 0;
}

java的多继承:不直接支持多继承,因为,一旦父类中出现了相同的成员,就会产生不确定性,java改良了C++这一缺陷

java的多继承,是通过“多实现”的方式来实现

java支持多层(多重)继承:D 继承 C,C 继承 B,B继承A,就会出现继承体系,

注意:当要使用一个继承体系时:

1.查看体系的最顶层,了解体系的基本功能

2.创建体系的最子类对象,完成功能的使用

继承体系图:

未完......

时间: 2024-08-23 04:55:45

JAVA学习第十一课(继承)的相关文章

JAVA学习第二十一课(多线程(一)初步了解)

放假在家,歇了好几天了,也没学习,今天学习一下多线程,找找感觉,后天就要回学校了,sad... PS:包 没有什么技术含量,会用即可,日后开发就必须要会用啦,所以打算先放一放,先来多线程 一.多线程概述 什么是进程? 通俗的说,可以理解为正在进行中的程序,进程实际上是对应的一个应用程序在内存中所属空间. 进程不直接执行的,进程只是分配该应用程序需要的内存空间,线程来负责执行,线程负责进程中内容执行的一个控制单元,也称之为执行路径,也称之为执行情景 什么是线程? 线程就是进程中一个负责程序执行的控

从.Net到Java学习第十一篇——SpringBoot登录实现

通过前面10篇文章的学习,相信我们对SpringBoot已经有了一些了解,那么如何来验证我们的学习成果呢?当然是通过做项目来证明啦!所以从这一篇开始我将会对之前自己做的.net项目用java来重写.这一篇,我们来现实登录模块. 一提到登录,我们首先想到的基本的功能点就有如下: 输入:用户名.密码.验证码. 登录成功后,跳转到后台.如果未登录直接访问后台,将会跳转到登录页面. 这里暂不考虑复杂的登录实现. 技术选型,沿用前面用到的知识点.那么这里较之于之前的文章,新用到的一个就是图片验证码,一个就

JAVA学习第十三课(继承下:抽象类abstract)

抽象:模糊 == 看不懂 继承:发现事物之间的共性关系,并向上抽取,以提高代码的复用性 事物里都具备这个功能,但是这个功能是什么,怎么去做,不知道,这就涉及到了抽象 1.继承:A,B两个类,都有show的功能,实现方式也一样那么就可以向上抽取其共性,做新类,使A,B继承于新类. 2.抽象:A,B两个类,都有show的功能,但是功能的实现方式不一样,那么向上抽取其方法生明,但是内容不一样,那么就用关键字abstract标识,表示抽象函数,那么这个类也必须用abstract标识,表示抽象类 abst

别样JAVA学习(五)继承上

上章我们进行了面向对象的学习, 发现如果定义的几个类中的属性和方法重复, 代码是不是会显得很冗余啊?,有没有一种思想可以简化呢? 有!下面我们来看继承就能解决这个问题 1.继承-概述 继承: 1,提高了代码的复用性 2,让类与类之间产生了关系,也就是多态的特性 注意:千万不要为了获取其它类的功能,简化代码而继承 必须是类与类之间有所属关系才可以继承. Java语言中:java只支持单继承,不支持多继承 因为多继承容易带来安全隐患:当多个父类中定义了相同功能 且功能内容不同时,子类对象不确定运行哪

JAVA学习第二十课(异常的应用和注意事项(三))

十.异常的应用 import java.util.Random; import javax.rmi.CORBA.Stub; /* *老师用电脑上课 *用面向对象思考问题 *问题设计两个对象 *老师,电脑 * *可能发生的问题: *电脑蓝屏.电脑冒烟 */ class Lan extends Exception//蓝屏 { Lan(String problem) { super(problem); } } class Fir extends Exception//冒烟 { Fir(String p

别样JAVA学习(六)继承下(2.1)Object类equals()

上一节继承下(一)我们进行抽象类.接口以及多态的学习, 接下来大家我们讲点特殊的东西就是object类, 我们一直在说继承,子继承了父,父还有没有父类呢, 为什么这么思考,大家想构造函数的第一行是不是都有 一个隐式的super()语句,它们是不是也都会去访问自己的 父类呢?其实是的,这个父类叫什么呢? 叫做Object类,传说JAVA对象中的上帝,哈哈. 1.定义 所有对象的超类,所有对象的直接后者间接父类. 肯定是所有对象都具备的功能. 随便定义一个类 class Demo{}除了隐式的构造方

java学习第十一天

第十二次课 目标 一维数组(创建访问) 一.概念与特点 1.概念 相同数据类型的有序集合[] 数组名: 容器的名字 元素:  下标变量,数组名[下标] 长度:  length 下标:   位置.索引  [0,length) 2.特点 1).数组是引用类型,也是对象 (new), 元素看成成员属性 2).数组是一个容器,长度一旦确定不可改变 (new 开辟空间) 3).元素的数据类型相同 a).基本类型: int[]  double[] b).引用类型: String[] Man[] Dog[]

Java学习第十七课(Object及其部分方法的应用)

Object :所有类的根类 Object是不断抽取而来的,具备着所有对象都具备的关系内容 方法摘要: clone():创建并返回一个此对象的副本 equals(Object obj):指示其他对象是否与此对象"相等" finalize():当垃圾回收器确定不存在对该对象更多的引用时,由对象的垃圾回收器调用此方法 getClass():返回Objext的运行时类 hashCode():返回该对象的哈希码值 notify():唤醒在此对象监视器上等待的单个线程 notifyAll():唤

别样JAVA学习(六)继承下(2.3)异常下

1.RuntimeException Exception中有一个特殊的子类异常RuntimeException执行时异常. 假设在函数内容抛出该异常,函数上能够不用声明.编译一样通过. 假设在函数上声明了该异常,调用者能够不用进行处理.编译一样通过. 之所以不用在函数上声明,是由于不须要让调用者处理. 当该异常发生,希望程序停止. 由于在执行时,出现了无法继续运算的情况, 希望停止程序后.对代码进行修正. 例: class Person { public void checkName(Strin