Java 对象的继承,抽象类,接口

子父级继承

关键字 extends

首先创建一个父类

1         class Fu
2         {
3             String name;
4             int a=1;
5             public void word()
6             {
7                 System.out.println("工作");
8             }
9         }

由一个子类继承

1         class Zi extends Fu
2         {
3             int a=2;
4             public void name()
5             {
6                 System.out.println(name);
7             }
8         }

此时创建一个类,来调用

1         class Test()
2         {
3             Zi z=new Zi();
4             z.name="小张";
5             z.word();
6             z.name();
7         }

由此得出总结:
        1)继承的出现提高了代码的复用性,提高软件开发效率
        2)继承的出现让类与类之间产生了关系,提供了多态的前提
        3)成员变量的变化:
            当出现相同名字的成员变量时,就近原则。如上面出现的int a;
            此时如果输出a那么,a=2;
            此时如果想要输出Fu的a,那么使用关键字
            super.a;
        4)上面代码中,Fu有name,而Zi没有name,Zi会继承Fu的name属性,所以此时使用对            象z.name来修改name值是的修改Zi的name。
        5)成员方法的特点
            同样方法也会被继承
            但当方法的返回值类型,方法名,参数相同时,方法会被覆盖
            在子类中,访问父类中的成员方法格式:
            super.父类中的成员方法();

抽象类的描述

  当两个或者多个累的方法相同时,那么向上抽取,只抽取方法声明,不抽取就是想方法就是抽象类

  抽象类的关键字 abstract

  类和抽象法都需要使用abstract修饰

  格式:

    类:    abstract class A{}

    抽象方法:public abstract A();

  抽象类的特点:

    1)抽象类中油抽象方法,抽象方法必须写在抽象类中

    2)抽象类不能直接创建对象

    3)抽象类可以被继承,然后进行方法的重写,重写方法以后就可以进行对象的创建。

接口的表述

  接口就是功能的集合,将方法的描述和具体的实现方法分开,优化了程序

  接口的关键字interface

  接口类的创建: public interface 类名

 接口的特点:

  1)接口中也可以有抽象方法,也需要使用abstract修饰

  2)接口同抽象类一样,不能创建对象,因为方法是抽象的,创建的对象毫无意义

  3)接口的抽象方法可以被继承之后重写

  4)接口中的变量都是常量不可以修改的,固定修饰符  public static final

  

抽象类和接口类的相同点和不同点:

  相同点

  1)都属于被继承或者最顶级的父类

  2)都不可以直接创建对象

  3)都包含有抽象方法,都可以在被继承之后重写这些方法

  

  不同点

  1)抽象类一次只能继承一个,接口可以被类多个实现

  2)抽象类可以包含抽象方法和具体方法,而接口类只能有抽象方法

原文地址:https://www.cnblogs.com/xiaozhang666/p/10392416.html

时间: 2024-11-13 09:50:42

Java 对象的继承,抽象类,接口的相关文章

基础学习day07---面向对象三---继承,接口与 抽象类

一.继承 1.1.继承概念 将对象的共性抽取出来.提取出一个单独的类. 继承使用复用以前的代码非常容易,能够大大的缩短开发周期,降低开发成本,同时增加程序的易维护性 继承使重一个类A能够直接使用另外一个类B的属性和方法的一种途径 类A可以有自己的属性和方法通过 extends 关键字让类与类之间产生继承关系. 让类和类之间产生了关系,有了这个关系,才有了多态的特性. 注意:千万不要为了获取其他类的功能,简化代码而继承. 必须是类与类之间有所属关系才可以继承,所属关系是 is  a.的关系 1.2

韩顺平循序渐进学java 第13讲 抽象类.接口

13.1抽象类 13.1.1 概念 当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法,称为抽象方法,用abstract来修饰该类,称为抽象类. 13.1.2 抽象类-深入讨论 抽象类是java中一个比较重要的类: 1.用abstract关键字来修饰一个类时,这个类就叫抽象类: 2.用abstract关键字来修饰一个方法时,这个方法就叫抽象方法: 3.抽象方法在编程中用的不是很多,但是在公司笔试时考的较多. 13.1.3 抽象类-注意事项 1.抽象类不能实例化: 2.抽象类不一

黑马程序员--java基础之多态,抽象类,接口,匿名内部类

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 4.4 子类的实例化过程 子类中所有的构造函数默认都会访问父类中空参数的构造函数. 因为每一个构造函数的第一行都有一条默认的语句super();. 子类会具备父类中的数据,所以要先明确父类是如何对这些数据初始化的. 为什么子类实例化的时候要访问父类中的构造函数呢? 那是因为子类继承了父类,获取到了父类中内容(属性),所以在使用父类内容之前,要先看父类是如何对自己的内容进行初始化的. P.S.

第三章:继承/抽象类/接口

继承 在面向对象编程中,有两种截然不同的继承类型,实现继承和接口继承;C#中不支持多重继承,C#类可以派生自另一个类和任意多的接口 实现继承:表示一个类型派生自一个基类型,它拥有该基类型的所有成员字段和函数,在需要给现有类型添加功能或者许多相关类型共享一组重要的公共功能时.这种类型继承非常有用 接口继承:表示一个类型只继承了函数的签名,没有继承任何的实现代码 实现继承virtual/override /// <summary> /// 基类 /// </summary> class

JAVA 虚函数 抽象函数 抽象类 接口

1. Java虚函数 虚函数的存在是为了多态. C++中普通成员函数加上virtual关键字就成为虚函数 Java中其实没有虚函数的概念,它的普通函数就相当于C++的虚函数,动态绑定是Java的默认行为.如果Java中不希望某个函数具有虚函数特性,可以加上final关键字变成非虚函数 PS: 其实C++和Java在虚函数的观点大同小异,异曲同工罢了. 2. Java抽象函数(纯虚函数) 抽象函数或者说是纯虚函数的存在是为了定义接口. C++中纯虚函数形式为:virtual void print(

Java中解决继承和接口默认方法冲突

1)超类优先.如果超类提供了一个具体方法,同名而且有相同参数类型发默认方法会被忽略. 2)接口冲突.如果一个超接口提供了一个默认方法,另一个接口提供了一个同名而且参数类型(不论是否是默认参数)相同的方法,必须覆盖这个方法来解决冲突. 下面来看第二个规则.考虑另一个包含getName方法的接口: interface Named { default String getName(){ return getClass().getName() + "_" + hashCode():} } 如果

继承、接口和抽象类

继承 子类继承父类 物以类聚->提取共同点形成父类(parent)/基类(base)/超类(super) 子类/派生类继承父类 子类也会继承父类的属性(成员变量)和方法,私有的成员变量(private)除外,private变量要用public方法去访问. 同名同参情况下,本类的方法会比父类的方法优先级高. 单根继承:每个类都只能继承一个类(C++可以多个类) 不写extends,java类默认继承于java.lang.Object类,默认有方法toSrting,clone,equals,fina

Java对象的复制

Java中对象的赋值分为浅拷贝和深拷贝. 1.对象浅拷贝 1 public class CloneTest{ 2 static class Emp{ 3 String name; 4 int age; 5 Date hireDate; 6 } 7 public static void main(String[] args){ 8 Emp emp1=new Emp(); 9 Emp emp2=emp1; 10 } 11 } 这种用“=”赋值的情况下就是对象的浅拷贝.在内存中emp1和emp2都指向

Android中Intent传递Java对象的方法

Android中Intent传递Java对象有两种方法:一是通过调用Bundle对象的putSerializable(Key,Object)方法[参见示例],另一种是通过调用Bundle对象的putParcelable(Key,Object)方法[参见示例]. 第一种方法要求传递的Java对象实现Serializable接口--Serializable接口是JavaSE特有的接口,采用该种方法实现类的序列化非常简单,声明一下系统会自动将其序列化. 第二种方法要求传递的Java对象实现了Parce