Java基础篇——类与子类

1. 什么是类,什么是子类?

类:类是Java程序的基本要素,一个Java应用程序就是由若干个类所构成的。类是Java语言中最重要的“数据类型”。

子类:由继承得到的类叫子类。

引出新的概念:什么是继承?

继承:
继承就是子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法,或子类从父类继承方法,获得等同于父类的相同行为的技术。java继承是面向对象的一个显著特征。

简单理解:类在生活中也是无处不在的,比如说所有的动物就是一个类,叫动物类,他们能吃东西,能跑等等。当然在动物类之中存在长颈鹿、狮子、老虎等等各种动物,而这各种动物也算是一种类,但这种类却包含在动物类之中,它们具备了动物的一切特征,比如:吃、跑。这种类与类的关系在Java之中也存在,前文中的动物类就可以当作是Java中的父类,而长颈鹿、狮子和老虎,就可以当作是java中的子类。

2. 类和子类是干什么的,都有什么用?

Java是一门面向对象的编程语言,面向对象具体可以参考我前面所发表的博文:Java基础篇——面向对象详解

类的实例化产生对象。而类的目的就是创建具有属性和行为的对象。在Java程序的运行过程之中,对象是每一步都不可或缺的元素,而Java通过对不同的类进行不同的实例化产生不同的对象,再通过代码遵循逻辑,处理每个对象之间的关系,从而达到程序最终所要达到的目的。

子类:在我们准备编写一个类时,发现某个类由我们所需要的成员变量和方法,如果我们想要复用这个成员变量和方法,即在所编写的类中不用声明成员变量就相当于有了这个成员变量,不用定义方法就相当于有了这个方法,那么我们可以将编写的类定义为这个类的子类,子类可以让我们不必一切“从头做起”。(概念来自《Java 2 实用教程(第5版) 耿祥义 著》)

代码解释:

package test;

class A{
	int a = 1;
	int b = 2;
	int sum = 0;
	void qiuhe() {
		sum = a+b ;
	}
}
class B extends A{
	void shuchu() {
	System.out.println(sum);
	}
}
public class test {
public static void main(String args[]) {
	B b = new B();
	b.qiuhe();
	b.shuchu();
}
}

运行截图:
Java基础篇——类与子类_第1张图片
提出问题:

上述代码之中,类 A定义了成员变量a、b、sum;定义了方法qiuhe();类B没有定义任何成员变量,只定义了一个方法shuchu(),但却在这个方法中使用了A类中定义的成员变量sum。并且在main()方法之中B类声明的对象b却调用了类A中的方法qiuhe();

运行结果分析:

程序正常运行,并且输出3。

原因分析:

类B的定义相比于类A的定义后面多了extends A;

有什么用:

声明B类作为子类继承于A类。

结合子类与继承的概念,子类具有父类的一切成员变量及其方法,问题解决。

3. 类和子类是怎么产生的?

类:

Java中用class定义的一种结构体叫做类,类中包含成员变量和成员方法。成员变量和以前定义变量的方法几乎一样,只不过位置发生了改变:类中方法外。成员方法也几乎和以前一样,位置变为:类中。

结构体格式如下:

public class test_1 {    //  这是一个类 
	int A;
	    //这是一个类中的成员变量
	
	void B() { 
		
		//这是一个类中的成员方法
		
	}
}

子类:
前文提到子类靠继承父类产生,那么在Java中如何通过继承父类得到子类,仔细观看前文得代码就会发现很简单:用extends,extends前面的,class后面的为子类名,exteds后面的为父类名。

代码格式如下:

class A{     //定义父类A
	int a = 1;   //父类成员变量
	int b = 2;
	int sum = 0;
	void qiuhe() {     //父类成员方法
		sum = a+b ;
	}
}
class B extends A{    //定义子类B继承于父类A
	void shuchu() {    // 父类成员方法
	System.out.println(sum);
	}
}

4. 在使用类的过程中需要注意什么。

  1. 对成员变量的操作只能是在方法里,方法使用各种语句队成员变量进行操作。例如:
class C{
	int a;   //合法
	int b = 12; //  合法	
}

  1. 类只能单一继承。举例说明:“你不能有两个父亲。”

当然关于类得使用中还存在着许多需要注意得地方,本文作者一时间能想到的也不是很多,如果大家还有觉得重要得需要补充以及对本文存在疑问欢迎大家评论,本文目的在于一起学习,相互讨论,共同进步。

你可能感兴趣的:(Java)