一.抽象类和抽象方法 (B 继承  抽象类A)

抽象类:有抽象方法的一定是抽象类

抽象方法:方法名前有abstract修饰,且方法没有方法体,即{},不需要实现任何功能,只是声明

1.抽象类中的方法有两种:

(1)抽象类中的普通方法,可以不必实现

(2)抽象方法,所属的抽象类被继承后,抽象方法必须被重写,除非是被抽象类继承,不必被

抽象类必须被继承,且抽象类不能被实例化,即抽象类A ,不能定义 A a=new A() ;

package Interface;

/**
* Created by wyy on 2017/2/25.
*/
public class abstractTest { public static void main(String[] args) {
Person s = new Students(); //引用Students的对象
Person t = new Teacher();//引用Teacher的对象
s.f();
t.f(); //我是一个学生 我是一个老师
}
}
abstract class Person {
public abstract void f(); //声明一个抽象类
} class Students extends Person { //类Students继承抽象类
public void f() {
System.out.println("我是一个学生");
}
} class Teacher extends Person { //类Teacher继承抽象类
public void f() {
System.out.println("我是一个老师");
}
}

二. 接口(B implements interface A)

实现接口的类,必须要实现接口内定义的所有方法.

先定义一个接口类Like

package Interface;

/**
* Created by wyy on 2017/2/22.
*/ public interface Like{
public void a();
public void b(); }

接口类 Hate

package Interface;

/**
* Created by wyy on 2017/2/22.
*/
public interface Hate {
public void c();
public void d(); }

实现这两个接口,必须实现接口内的所有方法:

public class A implements Like,Hate {

    @Override
public void a(){
System.out.println("this is a");
} @Override
public void b() {
System.out.println("this is b"); }
@Override
public void c() {
System.out.println("this is c");
} @Override
public void d() {
System.out.println("this is d"); }
}

三. 构造方法和类方法

(1)构造方法,继承(super,this 关键字)
构造方法:方法名和类名相同,一般用于创建对象的时候就赋值,常用于 this.name=name
  • 方法名与类名相同;
  • 不要返回类型(例如return、void等);
  • 不能被static、final、native、abstract和synchronized修饰,不能被子类继承。
父类的构造方法不能被子类调用,可以通过super语句调用父类的构造方法。
用super调用父类的构造方法必须遵守以下规则:
1. 子类的构造方法中不能直接通过父类的方法名调用父类的构造方法,使用super语句;
2. 加入在子类的构造方法中有super语句,它必须作为构造方法的第一条语句(同this语句)
 
(2)类方法:用static修饰的方法,可以用类名直接调用,不用创建实例载引用
 
四.方法重载和方法重写

 
(1)重载:overload 主要是针对类中同名的方法,但是其方法的参数类型,参数个数,参数顺序,返回数据类型不同,如: void method(),void method(int i),void method(int a,int b),String method();最常用的重载便是System.out.println()
其实就是一个类中有多个名字一样的方法,但是参数和返回值可能不一样。
 (2)重写:子类覆盖父类的方法,或者实现借口的方法,其方法名称,参数个数,参数类型,返回数据类型必须完全一致,另:重写的方法抛出的异常不能比父类异常更广(至少相同或是其异常的子类)。
其实一句话就是:
方法重载:就是在同一个类中,方法的名字相同,但参数个数、参数的类型或返回值类型不同!
方法重写:它是指子类和父类的关系,子类重写了父类的方法,但方法名、参数类型、参数个数必须相同!
 
方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载是一类中多态性的一种表现。
 
五.多态性

多态存在的三个必要条件
  • 继承
  • 重写(子类继承父类,但是有自己不同的方法处理)
  • 父类引用指向子类对象
A extends B
B b=new A(); //父类引用指向子类对象
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
即:如果父类调用子类的方法,如果父类中没有该方法,则会报错
子类引用父类的方法用super,引用自己的方法用this,重写方法指方法内实现的可以与父类不同
 
后期补充完善~

 

java基础知识6-- 抽象类,抽象方法,接口,构造方法,类方法等易混淆的知识点的更多相关文章

  1. Java基础知识(抽象类和接口)

    一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有声明,而没有具体的实现.抽象方法的声明格式为: 1 abstract void fun(); 抽象方法必须用abst ...

  2. JAVA核心技术I---JAVA基础知识(抽象类和接口)

    一:抽象类 (一)定义 类:属性(0或多个)+方法(0或多个)一个完整(健康)的类:所有的方法都有实现(方法体)类可以没有方法,但是有方法就肯定要有实现,这才是一个完整的类一个完整的类才可以被实例化, ...

  3. java基础知识总结--继承和接口

    什么是继承?什么是接口?他们之间的区别和联系是什么? 什么是继承? 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能.多个类中存在相同属性和行 ...

  4. 十、Java基础---------面向对象之抽象类与接口

    抽象类(abstract)     当编写一个类时,时常会为该类定义一些方法,这些方法的使用用以描述该类的行为方式,那么这些方法都有具体的方法体.但是在某些情况下,某个父类只是知道子类应该包含怎样的方 ...

  5. Java基础系列--06_抽象类与接口概述

    抽象类 (1)如果多个类中存在相同的方法声明,而方法体不一样,我们就可以只提取方法声明. 如果一个方法只有方法声明,没有方法体,那么这个方法必须用抽象修饰. 而一个类中如果有抽象方法,这个类必须定义为 ...

  6. 【java基础 16】抽象类和接口的区别

    导读:前两天闲着没事儿,看了本书,然后写了点代码,在接口里面写了默认方法实现,因为书上说这个特性是从java8开始的,我还特地给测了一下java7. 没过几天,就有一个技术分享会,刚好也是讲java8 ...

  7. Java基础5:抽象类和接口

    本文主要介绍了抽象类和接口的特性和使用方法. 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 文章首发于我的个人博客: https://h2pl.g ...

  8. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

  9. Java 基础知识(一)

    Java基础知识篇: 一.关键字解释 1. final:修饰非抽象类,非抽象方法和属性, 以及修饰方法参数,代表“无法改变的”.出于对设计或者效率的考虑使用该关键字. final类无法被继承,fina ...

随机推荐

  1. 刚安装Fedora 23工作站后,你必须要做的24件事

    [51CTO.com快译]Fedora 23工作站版本已发布,此后我们就一直在密切关注它.我们已经为新来读者介绍了一篇安装指南:<Fedora 23工作站版本安装指南> 还有一篇介绍如何从 ...

  2. yum和apt-get的区别

    一般来说著名的linux系统基本上分两大类: 1.RedHat系列:Redhat.Centos.Fedora等  2.Debian系列:Debian.Ubuntu等  RedHat 系列  1 常见的 ...

  3. Notepad++使用图解

    Notepad++使用图解.. Notepad++的安装部分 -------------- -------------- --------------- -------------- -------- ...

  4. SpringMVC详解(六)------与json交互

    Json(JavaScript Object Notation),它是一种轻量级数据交换格式,格式简单,易于读写,目前使用特别广泛.那么这篇博客我们主要谈谈在 SpringMVC 中,如何对 json ...

  5. JAVA通过I/O流复制文件

    JAVA通过I/O流复制文件 本文是对字节流操作,可以多音频视频文件进行操作,亲测有效. 个人感觉这个东西就是靠记的, 没什么好解释的,,,, import java.io.File; import ...

  6. 关于request、response转发与重定向的简述

    在做页面的请求与响应的时候我们多用request与response进行操作,而我们大家也知道,request是表示用户发向服务器的请求,而response是对用户请求的一个响应. 关于转发和重定向,通 ...

  7. 谈MVVM

    什么是MVVM? MVVM(模型-视图-视图模型,Model-View-ViewModal)是一种架构模式,并非一种框架,它是一种思想,一种组织与管理代码的艺术.它利用数据绑定,属性依赖,路由事件,命 ...

  8. python注释方法以及编码问题

    一.单行注释 在python中常使用"#"来进行单行注释,其快捷键为"ctrl+/",如果要对多行代码也就是代码块进行注释时,也可以选中多行按下 "c ...

  9. C#设计模式(4)-抽象工厂模式

    引言 上一篇介绍了设计模式中的简单工厂模式-C#设计模式(3)-工厂方法模式,本篇将介绍抽象工厂模式: 抽象工厂模式简介 抽象工厂模式(AbstractFactory):提供一个创建一系列相关或相互依 ...

  10. Web桌面应用框架2:著名的WEB桌面应用分析

    前一篇文章里,分析了包括NW.js和electron这种纯JS框架在内的几种Web桌面应用开发方式,实际上还有一种最古老的方式,那就是嵌入WebView的方式. 嵌入WebView的方式和整个程序都是 ...