JAVA基础知识-this,super,继承,接口

标签: this super 继承 JAVA
11人阅读 评论(0) 收藏 举报
分类:

  • this:

    1、表示对当前对象的引用!

    2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。(this可以访问本类的成员变量,成员方法,构造方法。除构造方法,实际上是从本类开始找(穿透性))

    3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!

    还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!

  • super     
  • 1、在子类中,若想调用父类的成员,用super. 来调用(只能在子类中使用)
  • 2、在子类中可以用来访问父类的成员属性和方法,调用父类的构造方法!
  • 3、使用super调用父类构造方的时候必须是第一行的有效代码;不能和this同时使用!

  • 注意:通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量。但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,你便需要认真考虑一下自己是否在用面向对象的思想编程,自己的程序是否是面向对象的。
  •  继承

定义:

 1、多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。

 2、多个类可以称为子类,单独这个类称为父类、超类或者基类。

 3、子类可以直接访问父类中的非私有的属性和行为。(依然可以通过get,set方法访问私有的成员)

 4、通过 extends 关键字让类与类之间产生继承关系。

作用:

1、提高了代码的重用性;

2、让类和类产生了联系,为多态提供了前提;

特点:

1、只支持单继承

2、多层继承(多级)

3、父类的私有成员,构造方法不能被继承

注意: 

1、如果类之间存在着:is a 的关系,就可以考虑使用继承。
2、不要为了继承部分功能,而去使用继承。
3、重载:在一个类中,可以定义多个同名的方法,但形参列表不能完全相同。
4、重写:在子类中,可以定义跟父类中一模一样的方法,这样既可以保留父类方法,又可以根据需要改写它
     的具体行为

  • 接口

概念:

在Java中,有一种特殊的类--“接口”,它是一种比“抽象类”更抽象的类,它本质上仍然是一个类。但它内部只能包含:常量和抽象方法。

作用:

可以弥补Java中“单继承”的弊端,可以为子类实现“功能扩展”

例如:几个人团队开发一个项目,项目经理就要求所有人员编写的类中必须包含两个

方法:check(),log()。此时项目经理可以做一个抽象类:

public abstract class Fu{

public abstract void check();

public abstract void log();

}

要求所有的类必须继承这个类:

public class Student extends Fu{

public void check(){

}

public void log(){

}

}

此时,“副项目经理”也有一个要求,要求所有的类中必须有一个方法:show(),由于Java中单继承的限制,无法再次制作“抽象类”被子类继承。这时可以定义一个“接口”,由子类去“实现”,这样就弥补Java中单继承的弊端。

public interface IA{

public abstract void show();

}

子类:

public class Student extends Fu implements IA{

//必须重写抽象父类中的所有方法

public void check(){

}

public void log(){

}

//必须重写接口中的所有抽象方法

public void show(){

}

}

2、接口多态

定义:

定义接口的语法:关键字:interface

示例代码:

public interface IPerson{

..

}

接口中可以包含的成员:(JDK8以前)

公有、静态、常量:常量指:其值不可变的“变量”。不能在代码中改变这个变量的值。成员变量被隐式的声明为:public static final ,这三个关键字都可以不写,编译器会自动添加。

public : 表示“公有”

static : 表示“静态”

final  : 表示“最终的,不可改变的”

公有、抽象方法:必须被修饰为:public abstract,这两个关键字也可以不写,编译器会自动添加。

.示例代码:

public interface IPerson{

public static final int num = 10;

String str = "abc";//隐式的:public static final String str = "abc";

public String add = "aaa";//隐式的:public static final String add = "aaa";

static int v1 = 20;//隐式的:public static final int v1 = 20;

final int v2 = 30;

int v3  = 30;

public abstract void show1();

void show2();//隐式的:public abstract void show2();

public void show3();

abstract void show4();

}

特点:

接口同抽象类一样,不能实例化。就是被子类“实现”,实现功能扩展。

接口编译后,会被生成.class文件。

查看评论

Java核心技术 第一章 接口、继承与多态

课程主要包含: 第一讲 类的继承 第二讲 Object类 第三讲 对象类型的转换 第四讲 方法的重载 第五讲 方法的重写 第六讲 多态 第七讲 抽象类和接口
  • 2017年05月02日 11:37

Java学习日记(四)继承、super、抽象类、接口

Java学习日记(四)继承、super、抽象类、接口
  • zgjswp
  • zgjswp
  • 2015-04-09 00:55:04
  • 771

Java基础_super()用法和继承的关系

下面的文章是转载自http://greateryang.blog.163.com/blog/static/81953375201232661845898/ 看完这篇文章,你可以理顺super()的...
  • s389747131
  • s389747131
  • 2014-12-19 13:30:59
  • 899

java-继承super的使用

java-继承,super的使用
  • u012360598
  • u012360598
  • 2014-11-30 00:19:15
  • 958

Java继承、super、继承访问权限

继承的概念 继承体现为两个类之间的一般与特殊的关系。如果A类是一种特殊的B类,则A继承B。我们将B称为父类,A称为子类。继承使用extends关键字。子类继承了父类,子类就称为一种特殊的父类,子类便...
  • LVAmber
  • LVAmber
  • 2017-04-17 14:59:07
  • 915

JAVA基础再回首(六)——父与子的继承、super关键字、方法重写、方法重载

JAVA基础再回首(六)——父与子的继承、super关键字、方法重写、方法重载 不墨迹,才是时间管理的最大利器,学无止境。 继承 首先我们来学习继承的概述多个类中存在相同属性和行为时,将这些内...
  • m366917
  • m366917
  • 2016-08-02 22:10:10
  • 2462

Java 中的继承的简单例子(super关键字)

class Cleanser{ private String s="Cleanser"; public void append(String a){s+=a;} public void dilu...
  • u014112584
  • u014112584
  • 2015-01-15 14:13:25
  • 1314

java之面向对象:继承extends、super、覆盖override的用法

继承的好处: 1 )提高了代码的复用性。 2 )让类与类之间产生了关系,给第三个特征多态提供 了前提。 java支持单继承,不直接支持多继承,但对C++中的多继承机制进行改良。 单继承:一个子类只能...
  • qiaoquan3
  • qiaoquan3
  • 2016-11-26 14:57:08
  • 1226

Java中多继承下的super()用法

一、super()调用的是直接父类中的构造函数,不是基类 package com.test1; class test1 { public test1() { System.ou...
  • weixin_32321361
  • weixin_32321361
  • 2016-10-29 16:10:04
  • 82

Scala继承

类型检查和转换 要测试某个对象是否属于某个给定的类,可以使用isInstanceOf方法,如果测试成功,你可以用asInstanceOf方法将引用转换为子类的引用 if(p.i...
  • shijiebei2009
  • shijiebei2009
  • 2014-08-20 20:45:14
  • 3174
    个人资料
    等级:
    访问量: 52
    积分: 49
    排名: 176万+
    文章存档