`
tw5566
  • 浏览: 460906 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java基础知识(一)----------(final,抽象类和接口)

    博客分类:
  • java
阅读更多
1.  final 关键字:
   1> final类是不能被继承的.
   2>final标记的方法是不能被子类复写的   
   3>final标记的变量即常量,只能被赋值一次.
 注意: 如果使用final来声明常量,请遵守以下常规: final标记的变量名,所有单词字母都需大写.

2. 抽象类

      讲抽象类的定义必须先讲抽象方法的定义. 所谓抽象方法,是指只声明而未实现(即没有{}包围的方法体)的方法. 而含有一个或多个抽象方法的类就称为抽象类.

      抽象类 = 普通类 + 抽象方法

      对于抽象类,时刻需要谨记: 抽象类是不能够直接实例化的, 如果要使用一个抽象类,就必须要有该抽象类的子类. 如果抽象类的子类不是抽象类的话,就一定要复写该抽象类的所有抽象方法.

      如下面代码示例: 
abstract class Person   
{   
    //全局常量的命名一定要采取全部字母大写的方式   
    public static final String NAME = "newsainton";   
    //print()方法有方法体,所以不是抽象方法   
    public void print()   
    {   
        System.out.println("非抽象方法中,Name = "+NAME);   
    }   
    //fun()方法不含方法体,为抽象方法   
    public abstract void fun();   
}   
//B类继承自A类,但B未声明为抽象类,则必须要复写A类中所有的抽象方法   
class Student extends Person   
{   
    public void fun()   
    {   
        System.out.println("抽象方法中,Name = "+super.NAME);   
    }   
}   
public class Demo01   
{   
    public static void main(String args[])   
    {   
        Student s = new Student();   
        s.fun();   
        s.print();   
    }   
} 

 另外一个需要考虑的问题是: 抽象类可否有自己的构造方法?

      答案是: 抽象类中允许有自己的构造方法,但是该构造方法并不能直接实例化自己的对象. 如果在抽象类中存在有参构造方法,则必须在子类中明确的使用super([参数列表])指明要调用父类中的哪个构造方法.

abstract class Person   
{   
    // 应该有姓名和年龄属性   
    private String name ;   
    private int age ;   
    public Person(){}   
    // 如果已经不是无参的,则必须在子类中明确调用无参构造   
    public Person(String name,int age)   
    {   
        this.name = name ;   
        this.age = age ;   
    }   
    public String getName()   
    {   
        return this.name ;   
    }   
    public int getAge()   
    {      
        return this.age ;   
    }   
    // 定义一个输出方法,但是此方法为抽象方法   
    public abstract String getInfo() ;   
}   
class Student extends Person   
{   
    public Student(String name,int age)   
    {   
        // 调用Person类中有两个参数的构造方法   
        super(name,age) ;   
    }   
    public String getInfo()   
    {   
        return "姓名 = "+super.getName()+",年龄 = "+super.getAge() ;   
    }   
}   
public class Demo05   
{   
    public static void main(String args[])   
    {   
        Student s = new Student("张三",30) ;   
        System.out.println(s.getInfo()) ;   
    }   
} 

3. 接口(interface)

   3.1 接口的概念

      接口是抽象方法与常量的结合.

      接口的定义方式为: interface 接口名 { 数据类型 常量名 = 常量值; 返回值类型 方法名(); .......}

      在Java中,一个类只能继承一个类,但是却可以实现(implements)多个接口. 如果实现接口的类不是抽象类的话,则该子类必须复写接口中所有的抽象方法.

      例如如下代码示例:      view plaincopy to clipboardprint?
interface Person   
{   
    //接口中包含了抽象类和抽象方法   
    public static final String NAME = "newsainton";   
    public abstract void fun();   
}   
// 一个类可以继承多个接口,但如果该类不是抽象类的话,则必须实现抽象类中的所有抽象方法   
class Student implements Person   
{   
    public void fun()   
    {   
        System.out.println("name = "+NAME);   
    }   
}   
public class Demo02   
{   
    public static void main(String args[])   
    {   
        Student s = new Student();   
        s.fun();   
    }   
}  
interface Person
{
	//接口中包含了抽象类和抽象方法
	public static final String NAME = "newsainton";
	public abstract void fun();
}
// 一个类可以继承多个接口,但如果该类不是抽象类的话,则必须实现抽象类中的所有抽象方法
class Student implements Person
{
	public void fun()
	{
		System.out.println("name = "+NAME);
	}
}
public class Demo02
{
	public static void main(String args[])
	{
		Student s = new Student();
		s.fun();
	}
} 

   3.2 接口的两点注意之处

       (1). 抽象类使的是extends关键字,表示一个类只能继承一个父类,但是接口使用的是implements,一个类可以同时实现多个接口,但是此时子类就必须同时覆写好多个接口中的抽象方法。

       (2). 既然定义中已经明确说明了接口是抽象方法和全局变量的集合,因此,我们可以如下例一样,对代码进行简化:      view plaincopy to clipboardprint?
interface Person   
{   
    //接口中包含了抽象类和抽象方法   
    //public static final String NAME = "newsainton";   
    public String NAME = "newsainton";   
    //public abstract void fun();   
    public void fun();   
}   
// 一个类可以继承多个接口,但如果该类不是抽象类的话,则必须实现抽象类中的所有抽象方法   
class Student implements Person   
{   
    public void fun()   
    {   
        System.out.println("name = "+NAME);   
    }   
}   
public class Demo03   
{   
    public static void main(String args[])   
    {   
        Student s = new Student();   
        s.fun();   
    }   
}  
interface Person
{
	//接口中包含了抽象类和抽象方法
	//public static final String NAME = "newsainton";
	public String NAME = "newsainton";
	//public abstract void fun();
	public void fun();
}
// 一个类可以继承多个接口,但如果该类不是抽象类的话,则必须实现抽象类中的所有抽象方法
class Student implements Person
{
	public void fun()
	{
		System.out.println("name = "+NAME);
	}
}
public class Demo03
{
	public static void main(String args[])
	{
		Student s = new Student();
		s.fun();
	}
} 

   3.3 接口与接口之间的关系

      一个接口可以使用extends关键字去继承一个或多个已有的接口,但在子类的实现时,也必须全部实现所有接口的抽象方法.

      

      一个接口去继承并实现多个接口的例子如下:      view plaincopy to clipboardprint?
interface A   
{   
    public void printA() ;   
}   
interface B   
{   
    public void printB() ;   
}   
interface C extends A,B   
{   
    public void printC() ;   
}   
class X implements C   
{   
    // 如果实现了(继承)C接口,则在子类中就必须覆写全部的抽象方法   
    public void printA()   
    {   
        System.out.println("A --> HELLO") ;   
    }   
    public void printB()   
    {   
        System.out.println("B --> HELLO") ;   
    }   
    public void printC()   
    {   
        System.out.println("C --> HELLO") ;   
    }   
}   
public class Demo04   
{   
    public static void main(String args[])   
    {   
        X x = new X() ;   
        x.printA() ;   
        x.printB() ;   
        x.printC() ;   
    }   
}  
interface A
{
	public void printA() ;
}
interface B
{
	public void printB() ;
}
interface C extends A,B
{
	public void printC() ;
}
class X implements C
{
	// 如果实现了(继承)C接口,则在子类中就必须覆写全部的抽象方法
	public void printA()
	{
		System.out.println("A --> HELLO") ;
	}
	public void printB()
	{
		System.out.println("B --> HELLO") ;
	}
	public void printC()
	{
		System.out.println("C --> HELLO") ;
	}
}
public class Demo04
{
	public static void main(String args[])
	{
		X x = new X() ;
		x.printA() ;
		x.printB() ;
		x.printC() ;
	}
} 

   3.4 这里,如果一个子类既要继承一个抽象类,又要实现一个接口,该怎么写呢?

      我们采取的是: class 类名称 extends 抽象类 implements 接口 这样的语法格式.

      下面是同时继承一个抽象类,又实现接口的具体实例:      view plaincopy to clipboardprint?
interface X   
{   
    public void printX() ;   
}   
interface Z   
{   
    public void printZ() ;   
}   
// 一个抽象类也是可以实现接口的   
abstract class Y implements Z   
{   
    public abstract void printY() ;   
}   
// D类同时继承Y类和实现X接口   
class D extends Y implements X   
{   
    public void printX()   
    {   
        System.out.println("X --> HELLO .") ;   
    }   
    public void printY()   
    {   
        System.out.println("Y --> HELLO .") ;   
    }   
    public void printZ()   
    {   
        System.out.println("Z --> HELLO .") ;   
    }   
}   
public class Demo13   
{   
    public static void main(String args[])   
    {   
        D d = new D() ;   
        d.printX() ;   
        d.printY() ;   
        d.printZ() ;   
    }   
} 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/newsainton/archive/2009/08/03/4405346.aspx
   
分享到:
评论

相关推荐

    java基础知识学习-个人笔记

    Java是一种广泛使用的面向对象的编程语言,其基础知识是学习Java编程的基石。下面将详细解释标题和描述中涉及的关键...以上就是Java基础知识的一些核心概念和特性,理解并掌握这些知识点对于深入学习Java编程至关重要。

    【IT十八掌徐培成】Java基础第05天-03.抽象类-抽象方法-修饰符组合.zip

    今天我们将深入探讨这个主题,特别是在Java基础课程的第五天,讲师徐培成讲解的"抽象类-抽象方法-修饰符组合"部分。下面将详细阐述相关知识点。 首先,我们来了解什么是抽象类。在Java中,抽象类是一种不能被实例化...

    Java基础知识总结 - 超详细篇收藏.zip

    9. **接口与抽象类**:接口用于定义一组方法,但不提供实现,而抽象类可以包含抽象方法(没有实现的方法)和具体方法。两者都是实现多态的方式,但接口更强调行为的规范,而抽象类则更多关注部分实现。 10. **反射...

    Java软件开发实战 Java基础与案例开发详解 3-10 java基础知识章节练习 共4页.pdf

    3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 ...

    接口与抽象类的区别以及一些java基础

    // 接口中的方法只能通过对象调用,不能通过类名调用 }}在Java中,接口和抽象类都是用于实现多态性的重要工具,但它们之间存在显著的区别: 1. **接口(Interface)**: - 接口是一个完全抽象的类型,它只包含...

    Java基础知识整理

    本文将对Java基础知识进行系统性的整理和总结,涵盖面向对象、访问控制权限、Final关键字、内部类、集合等多个方面的知识点。 面向对象 面向对象是一种编程范式,Java语言是完全面向对象的,它将一切事物都抽象为...

    java总结大全--包括所有java基础知识点.pdf

    在提供的文件内容中,主要涉及了几个关键的Java基础知识点,包括数值类型的表示、字符串处理、引用传递、方法重载、内部类以及接口的概念。 1. **数值类型的表示**: - Java中的整型(如`int`)进行除法运算时,会...

    JAVA基础-----面试宝典

    根据给定文件的信息,我们可以提炼出一系列与Java基础及面试相关的知识点,并进行详细的解析: ### 1. Spring、Hibernate、Struts的关系 Spring、Hibernate 和 Struts 是三个非常流行的 Java 框架,它们在 J2EE ...

    java基础知识学习教程-7面向对象.pptx

    Java基础知识学习教程-7面向对象 本资源主要讲解Java的面向对象编程基础知识,涵盖继承、包装类、抽象类与接口、内部类、Lambda表达式和枚举等重要概念。 继承是面向对象编程的核心机制,Java中只允许单继承,但是...

    java基础核心总结归纳---参考手册--心得手册-学习资料-总结经验

    Java是一种强大的、面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年推出。...以上是Java基础知识的概述,涵盖了许多核心概念。深入学习和理解这些内容,对于成为熟练的Java开发者至关重要。

    Java基础知识点总结.docx

    Java是一种广泛使用的面向对象的编程语言,其基础知识涵盖了多个方面,包括语法、面向对象特性、异常处理、多线程...以上只是Java基础知识的一个概述,每个话题都值得深入探讨和实践,不断学习和总结是提升技能的关键。

    【IT十八掌徐培成】Java基础第06天-02.接口-USB-Jing8.zip

    【接口与USB编程在Java中的应用】 在Java编程语言中,接口...通过学习这个课程,开发者不仅能掌握Java接口的基础知识,还能了解到如何将这些知识应用到实际的USB设备编程中,提升其在系统集成和设备控制方面的技能。

    java私塾面试题----JAVA基础1.rar

    这个压缩包文件包含了针对Java初学者和求职者的一系列面试题目,主要涵盖了Java基础知识。这些题目旨在检验和提升候选人在Java编程语言的理解、基本概念、语法和常见问题解决能力。下面将详细讨论其中可能涵盖的知识...

    Java软件开发实战 Java基础与案例开发详解 2-7 java上机练习 共5页.pdf

    3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 ...

    Java 基础(2-8) - 知识点.pdf

    Java 基础知识点概述 Java 是一种广泛使用的面向对象的编程语言,具有跨平台、高...在学习和面试中,理解并掌握这些Java基础知识点是至关重要的,它们构成了Java编程的基础框架,为更高级的概念和应用打下坚实的基础。

    1-JAVA类之一-JAVA类结构和main函数.rar

    本压缩包文件"1-JAVA类之一-JAVA类结构和main函数.rar"主要涵盖了两个关键知识点:Java类的结构以及main函数。 首先,让我们详细了解一下Java类的结构。一个基本的Java类通常包含以下几个部分: 1. **访问修饰符**...

    Java软件开发实战 Java基础与案例开发详解 9-5 java程序国际化的实现 共9页.pdf

    3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 ...

    Java软件开发实战 Java基础与案例开发详解 4-6 数组和排序算法章节练习 共4页.pdf

    3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 ...

    JAVA基础知识精华总结

    以上是JAVA基础知识的一些核心要点,涵盖对象初始化、继承、构造方法、访问控制、抽象类、final关键字、接口以及内部类等概念,这些都是编写JAVA程序的基础。理解并掌握这些知识点对于成为一名合格的JAVA开发者至关...

Global site tag (gtag.js) - Google Analytics