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

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

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

NUM.1 同包验证:

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

NUM.2 不同包验证:

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

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

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

 package day20190227;
public class Pet {
private String name;
private int health;
private int love;
public Pet(){
System.out.println("父类的无参构造方法调用");
}
public Pet(String name,int health,int love){
System.out.println("父类的有参构造方法调用");
this.name=name;
this.health=health;
this.love=love;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
}
public int getLove() {
return love;
}
public void setLove(int love) {
this.love = love;
}
//输出宠物信息
public String printInfo(){
return "我的名字叫"+name+",健康值为"+health+",亲密度为"+love;
}
}
 package day20190227;
/**
* 狗类,继承Pet类
* @author Administrator
*
*/
public class Dog extends Pet {
private String strain;
public Dog(){
System.out.println("狗类无参构造方法调用");
}
public Dog(String name,int health,int love,String strain) {
//super.printInfo();调用父类的方法
//super.name;调用父类的属性
super(name,health,love);//调用父类构造方法,必须在第一行
System.out.println("狗类有参构造方法调用");
this.strain = strain;
}
public String getStrain() {
return strain;
}
public void setStrain(String strain) {
this.strain = strain;
}
}

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

 package day20190227;
/**
* 有参&无参调用测试
* @author Administrator
*
*/
public class TestDogCon {
public static void main(String[] args) {
Dog dog=new Dog("小华",90,90,"拉布拉多犬");
}
}

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

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

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

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

Java的类继承的更多相关文章

  1. java一个类 继承HttpServlet 和实现Servlet区别

    java一个类 继承HttpServlet 和实现Servlet区别 servlet 是一个接口,如果实现这个接口,那么就必须实现接口里面定义的所有方法 而HttpServlet实现了servlet接 ...

  2. java的类继承(与c++对比)

    1. interface的引入 使用interface来定义某一类通用操作,而又不强制规定其实现,对于Java的流行真是太重要了. 以JDBC举例.在Java之前,C++与数据库建立连接,常用的一个技 ...

  3. 【JAVA】类继承对父类静态变量的操作

    对静态变量的操作存在继承时还是有一些模糊,做了个简单的测试: class Test { private String mName; public Test(String name) { setName ...

  4. java基础 类 & 继承

    类 在Java中,类文件是以.java为后缀的代码文件,在每个类文件中可以有多个类,但是最多只允许出现一个public类,当有public类的时候,类文件的名称必须和public类的名称相同,若不存在 ...

  5. C++ 和 Java 对类继承的差异

    #include <iostream> using namespace std; class Base { public: int i; Base() { i = ; fun(); } v ...

  6. Java: 类继承中 super关键字

    super 关键字的作用有两个: 1)在子类中调用超类的构造器,完成实例域参数的初始化,调用构造器的语句只能作为另一个构造器(通常指的是子类构造器)的第一条语句出现, 2)在子类中调用超类的方法,如: ...

  7. (转)Java:类与继承

    原文地址: http://www.cnblogs.com/dolphin0520/p/3803432.html 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大 ...

  8. Java:类与继承

    Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知 ...

  9. Java:验证在类继承过程中equals()、 hashcode()、toString()方法的使用

    以下通过实际例子对类创建过程汇中常用的equals().hashcode().toString()方法进行展示,三个方法的创建过程具有通用性,在项目中可直接改写. //通过超类Employee和其子类 ...

随机推荐

  1. [破解] IPhone 5S icloud dns bypass

    http://ui.iclouddnsbypass.com/deviceservices/buddy/barney_activation_help_en_us.buddyml http://www.j ...

  2. pandas 处理文本数据

    import pandas as pd import numpy as np 常规的字符串操作 s = pd.Series(['A',"B","C"," ...

  3. linux应用以及常用命令

    各目录作用"/" :Linux文件系统的入口.也是最高一级的目录."/bin":基本系统所需要的命令,功能和"/usr/bin"类似,这个目 ...

  4. python 接口自动化测试(六)使用unittest 批量用例管理

    我们日常项目中的接口测试案例肯定不止一个,当案例越来越多时我们如何管理这些批量案例?如何保证案例不重复?如果案例非常多(成百上千,甚至更多)时如何保证案例执行的效率?如何做(批量)测试数据的管理?如何 ...

  5. 【node】mongoose的基本使用

    1.安装mongoose npm install mongoose 2.启动数据库 mongod --dbpath d:\data\db 3.引入mongoose模块并连接数据库 const mong ...

  6. js设计模式(四)---迭代器模式

    定义: 迭代器模式是指提供一种方法,顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示,迭代器模式可以把迭代的过程从业务逻辑中分离出来,使用迭代器模式,即使不关心对象的内部构造,也可以按 ...

  7. 补充:MySQL经典45道题型

    一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher). 四个表的结构分别如表1-1的表(一)~表 ...

  8. servlet转发重定向

    1.request.getRequestDispacther("/test.jsp").forword(request,response);     转发   浏览器URL是一个地 ...

  9. DNSmasq介绍

    DNSmasq介绍 转载自:http://www.cnblogs.com/demonxian3/p/7472300.html#top 云主机的mac地址由物理机的dnsmasq随机分配,如果要修改ma ...

  10. 3.1.2 Spring之IoC

    二.Spring之IoC 1. IoC与DI (1) IoC 控制反转( IoC, Inversion of Control) , 是一个概念, 是一种思想. 控制反转就是对对象控制权的转移, 从程序 ...