一、super 和 this的用法

  主要解释一下引用构造函数的用法

  super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)

  this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)

  实例

class Person {
public static void prt(String s) {
     System.out.println(s);
}
    Person() {
        prt("父类·无参数构造方法: "+"A Person.");
}//构造方法(1)
    Person(String name) {
         prt("父类·含一个参数的构造方法: "+"A person's name is " + name);
}//构造方法(2) }
public class Chinese extends Person {
    Chinese() {
        super(); // 调用父类构造方法(1)
        prt("子类·调用父类"无参数构造方法": "+"A chinese coder.");
}
    Chinese(String name) {
        super(name);// 调用父类具有相同形参的构造方法(2)
        prt("子类·调用父类"含一个参数的构造方法": "+"his name is " + name);
}
    Chinese(String name, int age) {
         this(name);// 调用具有相同形参的构造方法(3)
         prt("子类:调用子类具有相同形参的构造方法:his age is " + age);
 
public static void main(String[] args) {
    Chinese cn = new Chinese();
    cn = new Chinese("codersai");
    cn = new Chinese("codersai", 18); }
}

运行结果:
父类·无参数构造方法: A Person.
子类·调用父类”无参数构造方法“: A chinese coder.
父类·含一个参数的构造方法: A person's name is codersai
子类·调用父类”含一个参数的构造方法“: his name is codersai
父类·含一个参数的构造方法: A person's name is codersai
子类·调用父类”含一个参数的构造方法“: his name is codersai
子类:调用子类具有相同形参的构造方法:his age is 18

二、接口

  接口的声明(关键字interface)

[可见度] interface 接口名称 [extends 其他的接口名] {
// 声明变量
// 抽象方法
}
interface Animal {
public void eat();
public void travel();
}

接口里面的属性全部是静态的常量

接口中的方法,全部都是抽象方法

接口的实现类必须全部重写接口中的所有的抽象方法

作用:如果我们想让某个类型实现拥有某个功能,我们就可以让该类型实现这个接口

  接口的实现(关键字Implements)

当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。

类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。

实现一个接口的语法,可以使用这个公式:

  ...implements 接口名称[, 其他接口名称, 其他接口名称..., ...] ...

  实例

public class MammalInt implements Animal{  //实现了Animal接口

   public void eat(){
System.out.println("Mammal eats");
} public void travel(){
System.out.println("Mammal travels");
} public int noOfLegs(){
return 0;
} public static void main(String args[]){
MammalInt m = new MammalInt();
m.eat();
m.travel();
}
}

以上实例编译运行结果如下:

Mammal eats
Mammal travels

重写接口中声明的方法时,需要注意以下规则:

  • 类在实现接口的方法时,不能抛出强制性异常,只能在接口中,或者继承接口的抽象类中抛出该强制性异常。
  • 类在重写方法时要保持一致的方法名,并且应该保持相同或者相兼容的返回值类型。
  • 如果实现接口的类是抽象类,那么就没必要实现该接口的方法。

在实现接口的时候,也要注意一些规则:

  • 一个类可以同时实现多个接口。
  • 一个类只能继承一个类,但是能实现多个接口。
  • 一个接口能继承另一个接口,这和类之间的继承比较相似。

  接口的继承(关键字extends)

一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。

下面的Sports接口被Hockey和Football接口继承:

public interface Sports
{
public void setHomeTeam(String name);
public void setVisitingTeam(String name);
} // 文件名: Football.java
public interface Football extends Sports
{
public void homeTeamScored(int points);
public void visitingTeamScored(int points);
public void endOfQuarter(int quarter);
} // 文件名: Hockey.java
public interface Hockey extends Sports
{
public void homeGoalScored();
public void visitingGoalScored();
public void endOfPeriod(int period);
public void overtimePeriod(int ot);
}

  接口的多继承

在Java中,类的多继承是不合法,但接口允许多继承。

在接口的多继承中extends关键字只需要使用一次,在其后跟着继承接口。 如下所示:

public interface Hockey extends Sports, Event

以上的程序片段是合法定义的子接口,与类不同的是,接口允许多继承,而 Sports及 Event 可能定义或是继承相同的方法

java基础学习笔记二(接口、super、this)的更多相关文章

  1. Java基础学习笔记二十六 JDBC

    什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库,J ...

  2. Java基础学习笔记二十八 管家婆综合项目

    本项目为JAVA基础综合项目,主要包括: 熟练View层.Service层.Dao层之间的方法相互调用操作.熟练dbutils操作数据库表完成增删改查. 项目功能分析 查询账务 多条件组合查询账务 添 ...

  3. Java基础学习笔记二十一 多线程

    多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念.进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线 ...

  4. Java基础学习笔记二十七 DBUtils和连接池

    DBUtils 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发,本案例我们讲采用apache commons组件一个成员:DBUtils.DBUtils就是JDBC的简化开发 ...

  5. Java基础学习笔记二 Java基础语法

    注释 注释用来解释和说明程序的文字,注释是不会被执行的. 单行注释 //这是一条单行注释 public int i; 多行注释 /* 这是 * 一段注释, * 它跨越了多个行 */ public vo ...

  6. Java基础学习笔记二十 IO流

    转换流 在学习字符流(FileReader.FileWriter)的时候,其中说如果需要指定编码和缓冲区大小时,可以在字节流的基础上,构造一个InputStreamReader或者OutputStre ...

  7. Java基础学习笔记二十三 Java核心语法之反射

    类加载器 类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,链接,初始化三步来实现对这个类进行初始化. 加载就是指将class文件读入内存,并为之创建一个Class对象.任 ...

  8. Java基础学习笔记(二) - 面向对象基础

    面向对象 一.面向对象概述 面向对象思想就是在计算机程序设计过程中,参照现实事物,将事物的属性特征.行为特征抽象出来,描述成计算机时间的设计思想.面向对象思想区别于面向过程思想,强调的是通过调用对象的 ...

  9. Java基础学习笔记二十二 网络编程

    络通信协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样.在计算机网络中,这些连接和通信的规则 ...

随机推荐

  1. 【leetcode】433. Minimum Genetic Mutation

    题目如下: 解题思路:我的思路很简单,就是利用BFS方法搜索,找到最小值. 代码如下: class Solution(object): def canMutation(self, w, d, c, q ...

  2. 【CF1257A】Two Rival Students【思维】

    题意:给你n个人和两个尖子生a,b,你可以操作k次,每次操作交换相邻两个人的位置,求问操作k次以内使得ab两人距离最远是多少 题解:贪心尽可能的将两人往两边移动,总结一下就是min(n-1,|a-b| ...

  3. 《Spring Cloud构建微服务架构》系列博文示例

    SpringCloud-Learning   源码下载地址:http://download.csdn.net/detail/k21325/9650968     本项目内容为Spring Cloud教 ...

  4. (转)ping: www.baidu.com: Name or service not known centos7 -bash: ifconfig: command not found

    [root@mysqlcentos01 ~]# ping www.baidu.com ping: www.baidu.com: Name or service not known [root@mysq ...

  5. Aspect-Oriented Programming : Aspect-Oriented Programming with the RealProxy Class

    Aspect-Oriented Programming : Aspect-Oriented Programming with the RealProxy Class A well-architecte ...

  6. Where should I put <script> tags in HTML markup?

    Where should I put <script> tags in HTML markup? When embedding JavaScript in an HTML document ...

  7. WebBrowser元素定位的常用方法

    在delphi中想要使用WebBrowser控件,需要一了解一些浏览器和网站制作的知识.操作元素(增删改查).需要提前了解HTML DOM.

  8. 美化Windows

    更改壁纸 https://www.omgubuntu.co.uk/2010/09/a-look-back-at-every-ubuntu-default-wallpaper google: ubunt ...

  9. oo_project_1

    Project 1题目要求分析: 实现多项式的加减运算,主要问题是解决输入格式的判断问题. 输入实例: {(3,0), (2,2), (12,3)} + {(3,1), (-5,3)} – {(-19 ...

  10. USACO 5.5 章节

    Picture 题目大意 IOI 1998 求n (<=5000)个矩形 覆盖的图形 的周长(包括洞), 坐标范围[-10000,10000] 题解 一眼离散化+2维线段树,但仔细一想 空间不太 ...