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基础课程的第五天,讲师徐培成讲解的"抽象类-抽象方法-修饰符组合"部分。下面将详细阐述相关知识点。 首先,我们来了解什么是抽象类。在Java中,抽象类是一种不能被实例化...
9. **接口与抽象类**:接口用于定义一组方法,但不提供实现,而抽象类可以包含抽象方法(没有实现的方法)和具体方法。两者都是实现多态的方式,但接口更强调行为的规范,而抽象类则更多关注部分实现。 10. **反射...
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中,接口和抽象类都是用于实现多态性的重要工具,但它们之间存在显著的区别: 1. **接口(Interface)**: - 接口是一个完全抽象的类型,它只包含...
本文将对Java基础知识进行系统性的整理和总结,涵盖面向对象、访问控制权限、Final关键字、内部类、集合等多个方面的知识点。 面向对象 面向对象是一种编程范式,Java语言是完全面向对象的,它将一切事物都抽象为...
在提供的文件内容中,主要涉及了几个关键的Java基础知识点,包括数值类型的表示、字符串处理、引用传递、方法重载、内部类以及接口的概念。 1. **数值类型的表示**: - Java中的整型(如`int`)进行除法运算时,会...
根据给定文件的信息,我们可以提炼出一系列与Java基础及面试相关的知识点,并进行详细的解析: ### 1. Spring、Hibernate、Struts的关系 Spring、Hibernate 和 Struts 是三个非常流行的 Java 框架,它们在 J2EE ...
Java基础知识学习教程-7面向对象 本资源主要讲解Java的面向对象编程基础知识,涵盖继承、包装类、抽象类与接口、内部类、Lambda表达式和枚举等重要概念。 继承是面向对象编程的核心机制,Java中只允许单继承,但是...
Java是一种强大的、面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年推出。...以上是Java基础知识的概述,涵盖了许多核心概念。深入学习和理解这些内容,对于成为熟练的Java开发者至关重要。
Java是一种广泛使用的面向对象的编程语言,其基础知识涵盖了多个方面,包括语法、面向对象特性、异常处理、多线程...以上只是Java基础知识的一个概述,每个话题都值得深入探讨和实践,不断学习和总结是提升技能的关键。
【接口与USB编程在Java中的应用】 在Java编程语言中,接口...通过学习这个课程,开发者不仅能掌握Java接口的基础知识,还能了解到如何将这些知识应用到实际的USB设备编程中,提升其在系统集成和设备控制方面的技能。
这个压缩包文件包含了针对Java初学者和求职者的一系列面试题目,主要涵盖了Java基础知识。这些题目旨在检验和提升候选人在Java编程语言的理解、基本概念、语法和常见问题解决能力。下面将详细讨论其中可能涵盖的知识...
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 是一种广泛使用的面向对象的编程语言,具有跨平台、高...在学习和面试中,理解并掌握这些Java基础知识点是至关重要的,它们构成了Java编程的基础框架,为更高级的概念和应用打下坚实的基础。
本压缩包文件"1-JAVA类之一-JAVA类结构和main函数.rar"主要涵盖了两个关键知识点:Java类的结构以及main函数。 首先,让我们详细了解一下Java类的结构。一个基本的Java类通常包含以下几个部分: 1. **访问修饰符**...
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 封装 ...
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基础知识的一些核心要点,涵盖对象初始化、继承、构造方法、访问控制、抽象类、final关键字、接口以及内部类等概念,这些都是编写JAVA程序的基础。理解并掌握这些知识点对于成为一名合格的JAVA开发者至关...