Java基础学习:面向对象之继承extends

后端学习评论5.3K字数 1929阅读6分25秒阅读模式

Java基础学习:面向对象之继承extends

0、继承的由来?

将多个类中共同的内容放在一个类中,然后其他类使用的时候不必再重新定义所需的内容,简化了程序。文章源自亦枫博客-https://yflad.cn/2008.html

 文章源自亦枫博客-https://yflad.cn/2008.html

1、定义

把很多类的相同特征和行为进行抽取,用一个类来描述。让多个类和这个类产生一个关系。这样的话,多个类就可以省略很多代码。这个关系就是继承。java中用[code]extends[/code]关键字表示。文章源自亦枫博客-https://yflad.cn/2008.html

 文章源自亦枫博客-https://yflad.cn/2008.html

2、生活中的继承 and java中的继承

1)生活中有:财产,古代的皇位文章源自亦枫博客-https://yflad.cn/2008.html

 文章源自亦枫博客-https://yflad.cn/2008.html

2)java中的继承有:文章源自亦枫博客-https://yflad.cn/2008.html

  1. 类与类之间的继承
  2. 成员变量,成员方法
  3. 哪些内容可以继承?
  4. 属性和行为

 文章源自亦枫博客-https://yflad.cn/2008.html

3、如何继承 以及 体系结构

1)用关键字 [code]extends[/code]文章源自亦枫博客-https://yflad.cn/2008.html

 文章源自亦枫博客-https://yflad.cn/2008.html

2)继承的体系结构文章源自亦枫博客-https://yflad.cn/2008.html

A:多个具体的对象,不断的向上抽取共享的内容,最终形成了一个体系。这个体系叫做继承体系。文章源自亦枫博客-https://yflad.cn/2008.html

B:继承体系的学习和使用原则文章源自亦枫博客-https://yflad.cn/2008.html

文章源自亦枫博客-https://yflad.cn/2008.html

学习顶层的内容。因为他是整个体系的共性内容。文章源自亦枫博客-https://yflad.cn/2008.html

创建子类使用。也就是使用底层的具体对象。文章源自亦枫博客-https://yflad.cn/2008.html

 文章源自亦枫博客-https://yflad.cn/2008.html

 文章源自亦枫博客-https://yflad.cn/2008.html

4、继承有哪些特点?

  1. 继承父类拥有的非私有的成员变量,成员方法
  2. 子类可以拥有自己的成员变量和成员方法
  3. 如果子类重写了父类的方法,则执行方法的时候,实行的是重写后的成员方法
  4. 类与类之间只能单继承(一个子类只能有一个父类,一个父类可以有多个子类)
  5. 类可以多重继承

 文章源自亦枫博客-https://yflad.cn/2008.html

5、继承的好处和弊端:

1)好处:文章源自亦枫博客-https://yflad.cn/2008.html

继承的出现提高了代码的复用性。

继承的出现让类与类之间产生了关系,提供了多态的前提。

2)弊端:

违背了软件工程理念:低耦合,高内聚

低耦合:

高内聚就是类的内部数据操作细节自己完成,不允许外部干涉

高内聚:

低耦合是仅暴露少量的方法给外部使用,尽量方便外部调用

 

6、子父类中的成员关系

A)成员变量

在子类方法中使用一个变量时:

首先,在方法的局部变量中找这个变量,有则使用。

否则,在本类中找成员变量,有则使用。

否则,在父类中找成员变量,有则使用。

否则,报错。

B)成员方法

用子类对象使用一个方法时。

首先,在子类中找这个方法,有则使用。

否则,在父类中找这个方法,有则使用。

否则,报错。

 

例:

package cn.yflad.oop;
/*
 * 继承.父类
 */
public class Father {
	String name;
	int age = 16;

	public void study() {
		System.out.println("姓名:" + name + ",年龄" + age + ",在吃东西");
	}
}

 

package cn.yflad.oop;
/*
 * 继承.子类
 */
public class Son extends Father { // 单继承
	// 1.继承父类拥有的非私有的成员变量和成员方法
	// 2.子类可以拥有自己的成员变量和成员方法
	int age = 22;

	public void sonStudy() {
		System.out.println(name + age + "打豆豆");
	}
}

 

package cn.yflad.oop;
/*
 * 继承.“孙子辈”
 */
public class SonSon extends Son { // 子类多重继承,既继承了父类也继承了爷爷类
	String gender;
public static void main(String[] args) {
	Father fatherSon=new Father();
	fatherSon.name="老父";
	fatherSon.study();
}
}

 

package cn.yflad.oop;
/*
 * 继承.测试
 */
public class Test {
public static void main(String[] args) {
	SonSon sonson=new SonSon();
	//孙子既继承了父亲的,也继承了爷爷的
	sonson.name = "李四";
	sonson.study();
	sonson.sonStudy();
}
}

 

7、重写和重载的区别?

1)重载:在同一类中。方法名相同,参数列表不同。重载可以改变返回类型。

1)重写:在不同类中(子父类中)。方法声明相同(返回类型,方法名,参数列表均相同)。

 

2)重写需要注意:

子类方法的访问权限要大于等于父类方法的访问权限。

静态只能重写静态。但是这种情况一般不会出现。

 

8、构造方法

1)子类的实例化过程:

子类创建对象时,会先去创建父类的对象。默认是去调用父类的无参构造方法。

 

2)子类构造方法中,第一行默认是super(),以及为什么?

因为他继承父类的成员使用,使用前这些成员必须初始化,而他们是父类的成员,所以,必须通过父类进行初始化。

所以,会先创建一个父类的对象。当父类没有无参构造方法时,必须使用this或者super调用其他的构造方法。

 

9、this和super的区别

1)this:代表本类对象的引用。

2)super:代表父类的存储空间。

继续阅读
扫扫关注公众号
weinxin
我的微信
扫扫体验小程序
weinxin
我的公众号
亦枫
  • 本文由 发表于 2018年12月5日 17:08:41
评论  0  访客  0
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定