Java的类继承

Wesley13
• 阅读 817

知识点
1、继承
作用:提高代码的重用性,继承之后子类可以继承父类中的属性和方法
减少重复代码
条件:子类和父类要满足is a的逻辑关系,才能使用继承。
如:苹果 is a水果
语法:使用extends 连接子类和父类。子类 extends 父类
Java是单继承,一个类只能继承一个父类。
子类不能继承父类私有的属性,但是可以继承父类属性的GET/SET方法
super关键字:代表父类对象,可以调用父类的属性,父类的方法,
子类对象在创建的时候,默认调用父类的无参构造方法。

二、abstract关键字 抽象
abstract可以修饰类和方法
1.抽象类
不能被实例化
2.abstract也可用于方法——抽象方法
抽象方法没有方法体
抽象方法必须在抽象类里
抽象方法必须在子类中被实现,除非子类是抽象类

Java的类继承

对应验证访问修饰符总结的代码:

NUM.1 同包验证:

1 package a;
2 public class A {
3     private String a="1";
4     String b="2";
5     protected String c="3";
6     public String d="4";
7 }

1 package a;
2 public class B {
3     public static void main(String[]args){
4         A a=new A();
5         System.out.println(a.b);//可以调用除用private修饰的之外所有的变量
6     }
7 }

NUM.2 不同包验证:

 1 package b;
 2 /**
 3  * 在这里要先进行导包,如果不这样,
 4  * 下面要想new A()就不行,new c()的意义在于建立一个子类方法,
 5  * 从而观察经private修饰过后的变量是否能在其子类中调用
 6  */
 7 import a.A;
 8 public class C extends A{
 9     public static void main(String[]args){
10         A a=new A();
11         C c=new C();
12         //c作为子类是可以调用以private访问修饰符修饰的c
13         //以及用public修饰的d
14         System.out.println(c.c);
15         System.out.println(c.d);
16         //而a作为new的父类,则因在不同包的原因而只能调用public修饰的d
17         System.out.println(a.d);
18     }
19 }

写到这里,我突然想到java默认的调用方法是用无参的方法,如果有在调用时设定了参数就会使用有参构造方法,

此时不由想到父类和子类的代码块调用,于是我设计了以下代码去进行测试

 1 package day20190227;
 2 public class Pet {
 3     private String name;
 4     private int health;
 5     private int love;
 6     public Pet(){
 7         System.out.println("父类的无参构造方法调用");
 8     }
 9     public Pet(String name,int health,int love){
10         System.out.println("父类的有参构造方法调用");
11         this.name=name;
12         this.health=health;
13         this.love=love;
14     }
15     public String getName() {
16         return name;
17     }
18     public void setName(String name) {
19         this.name = name;
20     }
21     public int getHealth() {
22         return health;
23     }
24     public void setHealth(int health) {
25         this.health = health;
26     }
27     public int getLove() {
28         return love;
29     }
30     public void setLove(int love) {
31         this.love = love;
32     }
33     //输出宠物信息
34     public String printInfo(){
35         return "我的名字叫"+name+",健康值为"+health+",亲密度为"+love;
36     }
37 }

 1 package day20190227;
 2 /**
 3  * 狗类,继承Pet类
 4  * @author Administrator
 5  *
 6  */
 7 public class Dog extends Pet {
 8     private String strain;
 9     public Dog(){
10         System.out.println("狗类无参构造方法调用");
11     }
12     public Dog(String name,int health,int love,String strain) {
13         //super.printInfo();调用父类的方法
14         //super.name;调用父类的属性
15         super(name,health,love);//调用父类构造方法,必须在第一行
16         System.out.println("狗类有参构造方法调用");
17         this.strain = strain;
18     }
19     public String getStrain() {
20         return strain;
21     }
22     public void setStrain(String strain) {
23         this.strain = strain;
24     }
25 }

在设定好父类和子类的无参构造方法和有参构造方法后,我在其中分别加入了一段说明语句,而后再重新编辑了一个TestDogCon类用于测试;

 1 package day20190227;
 2 /**
 3  * 有参&无参调用测试
 4  * @author Administrator
 5  *
 6  */
 7 public class TestDogCon {
 8     public static void main(String[] args) {
 9         Dog dog=new Dog("小华",90,90,"拉布拉多犬");
10     }
11 }

经测试发现当dog设定了数据时,显示的都是

Java的类继承

而当将new Dog()中的数据删去后,显示的则是

Java的类继承

总结:在创建子类的对象时,Java虚拟机首先执行父类的构造方法,然后再执行子类的构造方法。

在多级继承的情况下,将从继承树的最上层的父类开始,依次执行各个类的构造方法,这可以保证子类对象从所有直接或间接父类中继承的实例变量都被正确的初始化。

点赞
收藏
评论区
推荐文章
Irene181 Irene181
3年前
一篇文章带你搞懂Python中的继承和多态
一、继承的介绍继承是一种创建新的类的方式,新创建的叫子类,继承的叫父类、超类、基类。继承的特点就是子类可以使用父类的属性(特征、技能)。继承是类与类之间的关系。继承可以减少代码冗余、提高重用性。在现实生活中,继承一般指的是子女继承父辈的财产,如下图:二、如何用继承?1.继承语法Class派生类名(基类名):基类名写在括号里。在继承关系中,已有的,设计好
Jacquelyn38 Jacquelyn38
3年前
你不可不知的JS面试题(第二期)
1、什么是继承?子类可以使用父类的所有功能,并且对功能进行扩展。新增方法改用方法(1)、ES6使用extends子类继承父类的方法。// 父类    class A        constructor(name)            this.name name;                getNa
Stella981 Stella981
3年前
Python Day24:类的继承、派生、覆盖、super()、绑定、非绑定方法
类的继承、派生、覆盖、super()python类的继承:子类继承父类,只需要在定义类的时候在类名后面加上(父类名)。继承之后,父类的属性方法、子类都可以访问派生:子类继承父类后,自己在父类的基础上,又添加了一些属于自己特性的属性、方法
Wesley13 Wesley13
3年前
Java基础学习总结(7)——Object类
一、Object类介绍  Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能有一个,JAVA为了组织这个类组织得比较方便,它提供了一个最根上的类,相当于所有的类都是从这个类继承,这个类就叫Object。所以
Wesley13 Wesley13
3年前
Java高级类特性(一)
一、继承性!(https://oscimg.oschina.net/oscnet/4da087cd3fa07b567f305a479b4035e99b8.png)1)继承的使用:权限修饰符classAextendsB{};2)子类:A父类(基类SuperClass):B3)子类继承父类后,父类中声明的属性、方法,子
Wesley13 Wesley13
3年前
Java基础28
1/2继承的概述:31.提高了代码复用性,简化了代码42.让类与类之间产生了继承关系,才有了后面的多态特性的存在5注意:千万不要为了获取其他类的功能简化代码,而建立继承关系,必须要类与类之间存在继承关系,继承关系:isa67子类拥有父类的成员,子类不能拥有父类
Easter79 Easter79
3年前
Swift专题讲解十四——继承
Swift专题讲解十四——继承一、引言      Swift中,一个类可以从另一个类继承方法、属性、下标及其他特性。当一个类继承于另一个类时,这个类被称为子类,所继承的类被称为父类。在Swift中,继承是类区别于其他类型的主要特征。子类除了可以调用父类的属性,下标,方法外,其也可以对父类的属性,下标,方法进
Wesley13 Wesley13
3年前
Java基础知识笔记
Java基础知识笔记6继承6继承继承是一种由已创建的类创建新类的机制,利用继承,我们先创建一个共有属性的一般类,根据一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并根据需要增加他自己新的状态和行为,由继承得到的类称为子类,被继承的称为父类。Java中,一个子类只能继承一个父类,不支持多重继承;1继承的基
小万哥 小万哥
9个月前
C# 继承、多态性、抽象和接口详解:从入门到精通
C继承在C中,可以将字段和方法从一个类继承到另一个类。我们将“继承概念”分为两类:派生类(子类)从另一个类继承的类基类(父类)被继承的类要从一个类继承,使用:符号。在以下示例中,Car类(子类)继承了Vehicle类(父类)的字段和方法:示例csharpc
小万哥 小万哥
8个月前
Java 继承与多态:代码重用与灵活性的巧妙结合
Java继承(子类和超类)在Java中,可以从一个类继承属性和方法到另一个类。我们将“继承概念”分为两类:子类(child):从另一个类继承的类超类(parent):被继承的类要从一个类继承,使用extends关键字。示例:javaclassVehicle