一.抽象类
----1.概念
在解决实际问题时,一般将父类定位抽象类,需要使用这个父类进行继承与多态的处理。
...在java语言中设置抽象类不可以实例化对象。
----2.格式
public abstract class Test{
abstract void testAbstract();//定义抽象方法--->没有方法体
}
抽象方法本身没有任何意义,除非被重写,而承载这个抽象方法的抽象类就必须被继承。
实际上抽象类除了被继承之外没有任何意义。
抽象类被继承后需要实现(覆盖)其中所有的抽象方法。
由于类不能同时继承多个父类--->接口的概念出现了。
二.接口
----1.概念
接口是抽象类的延伸--->纯粹的抽象类,接口中的所有方法都没有方法体。
----2.格式
public interface drawTest {
void draw(); //接口内的方法,省略abstract关键字
}
注意:
在接口定义的方法必须被定义为public或者abstract形式,其他修饰符不被java编译器所认可,如果不将该方法声明为public形式,它也是public。
说明:
在接口中定义的任何字段都自动是static和final的。
向上转型:
父类对象、抽象父类对象、该类实现接口。都是可以的。
使用接口就可以实现多重继承。
补充:
星期三, 十一月 11, 2015 18:02:38
一:抽象类
Java可以创建一种类专门用来当做父类,这种类称为“抽象类”。
抽象类作用有点类似“模板”,其目的是要设计者依据它的格式来修改并创建新的类。
-----1.概念:
抽象类也是一种类,只是比其他类多了一些抽象方法。
抽象方法是只声明而未实现的方法,所有的抽象方法必须使用abstract声明,
包含抽象方法的类也必须使用abstract class声明。
抽象类的定义规则如下:
1.抽象了了和抽象方法都必须用abstract关键字来修饰
2.抽象类不能被直接实例化,也就是不能直接用new关键字去产生对象
3.抽象方法只需声明,而不需要实现。
4.含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。
----2.抽象类的实例
2.1代码案例
package day10;
public class AbstractTest {
public static void main(String[] args) {
Student stu = new Student("haha",22);
Worker wok = new Worker("xixi",24);
System.out.println(stu.talk());
System.out.print(wok.talk());
}
}
abstract class Person {
String name;
int age;
public abstract String talk();
}
class Student extends Person {
public Student(String n,int a) {
this.name = n;
this.age = a;
}
public String talk() {
return "学生名称"+name+"\t"+"学生年龄"+age;
}
}
class Worker extends Person {
public Worker(String n,int a) {
this.name = n;
this.age = a;
}
public String talk() {
return "工人名称"+name+"\t"+"工人年龄"+age;
}
}
运行结果:
学生名称haha 学生年龄22
工人名称xixi 工人年龄24
提示:
与一般类相同,在抽象类中也可以拥有构造方法,但是这些构造方法必须在子类中被调用。
----2.2 代码案例
抽象方法中的构造方法
package day10;
public class AbstractTest {
public static void main(String[] args) {
Student stu = new Student("waoo",25);
System.out.println(stu.talk());
}
}
abstract class Person {
String name;
int age;
public Person(String name,int age) {
this.name = name;
this.age = age;
}
public abstract String talk();
}
class Student extends Person {
public Student(String n,int a) {
super(n,a);//在这里必须明确调用抽象类中的构造方法
}
public String talk() {
return "学生名称:"+name+"\t"+"学生年龄:"+age;
}
}
运行结果:
学生名称:waoo 学生年龄:25
在程序中可以看到,抽象类也可以像普通类一样,有构造方法、一般方法和属性,
更重要的是还可以有一些抽象方法,留给子类去实现,而且在抽象类中声明构造方法后,
在子类中必须明确调用。
二.接口
----1.j接口的相关概念:
接口是Java所提供的另一种重要技术,它的结构和抽象类非常相似,也具有数据成员与抽象方法,但它与抽象类又有以下两点不同。
(1)接口里的数据成员必须初始化,且数据成员均为常量。
(2)接口里的方法必须全部生命为abstract,也就是说,接口不能像抽象类一样保有一般的方法,必须全部是“”抽象方法。
接口中的语法
interface 接口名称 //定义抽象类
{
final 数据类型 成员名称 = 常量;//数据成员必须赋初值
abstract 返回值的数据类型 方法名(参数...);//抽象方法,注意在抽象方法里没有定义方法主体
}
接口与一般类一样,本身也具有数据成员与方法,但数据成员一定要赋值,且此值不能再更改,方法也必须是"抽象方法"。
也正因为方法必须是抽象方法,而没有一般的方法,所以如上格式中,抽象方法声明的关键字abstract是可以省略的。
事实上总结两点:
1.接口里的“抽象方法”只要做声明即可,而不用定义其处理测方式。
2.数据成员必须赋初值。(声明数据成员的关键字final也可以省略.)
在Java中接口是由于事先多继承的一种机制,也是java设计中最重要的一个环节,
每一个由接口实现的类必须在类内部覆写接口中的抽象方法且可自由地使用接口的常量。
因为接口里只有抽象方法,它只要声明而不用定义处理方法,
所以接口不可以创建对象。
利用接口打造新的类的过程,称之为接口的实现。
格式:
class 类名implements接口A,接口B {
}
----2.2接口的实例
代码案例:
package day10;
public class InterfaceTest {
public static void main(String[] args) {
Student stu = new Student();
System.out.println(stu.talk());
}
}
interface Person {
String name = "刘惜君";
String gs = "BAT";
public abstract String talk();
}
class Student implements Person {
public String talk() {
// TODO Auto-generated method stub
return "名称: "+name+"\t"+"公司名称: "+gs;
}
}
运行结果:
名称: 刘惜君 公司名称: BAT
----2.3
接口与一般的类一样,均可以通过扩展的技术来派生出新的接口。
原来的接口称为基本接口或父接口,派生出的接口称为派生接口或子接口。
通过这种机制,派生接口保留父接口的成员,同时也可以加入新的成员以满足实际的需要。
同样,接口的扩展(或继承)也是通过extends来实现的。
但是,一个接口可以继承多个接口。
格式:
interface 子接口名称 extends 父接口1,父接口2,....{
}
----2.3.1接口继承的案例
代码案例:
package day10;
public class InterfaceTest {
public static void main(String[] args) {
D t = new D();
t.sayI();
t.sayJ();
t.sayK();
}
}
interface I{
int I = 10;
public void sayI();
}
interface J{
int J = 20;
public void sayJ();
}
interface C extends I,J {
int K = 30;
public void sayK();
}
class D implements C {
public void sayK() {
// TODO Auto-generated method stub
System.out.println("K="+K);
}
public void sayI() {
// TODO Auto-generated method stub
System.out.println("I="+I);
}
public void sayJ() {
// TODO Auto-generated method stub
System.out.println("J="+J);
}
}
运行结果:
I=10
J=20
K=30
类与继承不同的是:
一个接口可以同时继承多个接口,也就是同时继承了多个接口的抽象方法与常量。
星期三, 十一月 11, 2015 19:47:17
相关推荐
"day13_java_源码"中的例子可能包含了如何创建和使用抽象类和接口的实例。假设我们有一个抽象类`AbstractExample`和一个接口`InterfaceExample`: ```java abstract class AbstractExample { abstract void ...
面向对象编程是Java的核心特性,其中继承、抽象类和包是三个重要的概念。在Java中,继承允许我们创建一个新类(子类),这个新类能够获取另一个已存在的类(父类)的属性和方法,从而实现代码的复用和扩展。这有助于...
### Java包与接口实验报告知识点总结 #### 一、Java包的作用及结构 - **包的概念**:在Java中,包是一种将相关的类和接口组织在一起的方式,它可以帮助开发者更好地管理类库,避免命名冲突,并控制类之间的可见性...
8. 抽象类(Abstract Class):抽象类是不能被实例化的类,它通常用于定义一组共同特征,供其他类继承。使用"abstract"关键字声明抽象类。 9. 异常处理(Exception Handling):Java提供了异常处理机制,使得程序...
抽象类和接口提供了一种抽象层次,使得代码设计更加模块化。 在处理字符时,Java提供了`Character`类,该类包含了大量静态方法,用于检查字符属性(如是否为字母或数字)、转换字符(如大小写转换)以及执行其他与...
day02-多态&抽象类&接口
本知识点将深入探讨面向对象编程中的三个重要概念:抽象类、接口以及内部类,并通过实例解析它们的使用和作用。 1. 抽象类(Abstract Class) 抽象类是不能被实例化的类,它用来作为其他类的基类,提供公共的属性...
在Java编程语言中,面向对象、多态、抽象类和接口是核心概念,它们对于构建高效、可扩展的代码至关重要。下面将详细解释这些概念及其特点。 **面向对象**是Java编程的基础,它允许我们将复杂的问题分解为独立的实体...
在"VIP09_JavaSE_JavaIO_File_day0307-1.rar"这个压缩包中,我们可以预想它包含的是一个关于Java IO和File类的课程或教程的第三天第七节的内容。下面,我们将深入探讨Java IO和File类的相关知识点。 1. **Java IO...
这包括了覆盖(Override)方法、访问修饰符的使用、抽象类与接口的选择等方面的知识。通过实践这些概念,你将能够更好地理解和运用面向对象编程,为编写更加高效和易于维护的代码打下坚实的基础。
2. **抽象类与接口**:Java中的抽象类和接口也可以实现多态。抽象类不能被实例化,但可以作为其他类的基类,强制子类重写特定方法。接口则是一种完全抽象的类型,它可以包含方法签名和常量,且一个类可以实现多个...
day09【继承、super、this、抽象类】 day10【接口、多态】 day11【final、权限、内部类、引用类型】 此课程全部课程资料获取: JavaEE基础学习资料地址汇总:...
1.3 多态的好处与弊端 好处: - 提高程序的扩展性:定义方法时使用父类类型作为参数,可以接受任何子类对象,使得程序更具灵活性和可扩展性。 弊端: - 不能使用子类的特有成员:由于父类引用只能调用父类中的成员...
7. **接口**:在Java中,接口是完全抽象的类,用于定义一种规范,多个类可以实现同一个接口以实现某种统一的行为。 8. **异常处理**:Java中的异常处理机制(try-catch-finally)用于处理运行时错误,保证程序的...
- **GenericServlet类**:它是Servlet接口的一个抽象类,提供了基本的Servlet功能实现,如多线程处理请求和生命周期管理。 - **HttpServlet类**:进一步扩展了GenericServlet,专门处理HTTP协议的请求,我们通常会...
day09【继承、super、this、抽象类】 day10【接口、多态】 day11【final、权限、内部类、引用类型】 此课程全部课程资料获取: JavaEE基础学习资料地址汇总:...
day09【继承、super、this、抽象类】 day10【接口、多态】 day11【final、权限、内部类、引用类型】 此课程全部课程资料获取: JavaEE基础学习资料地址汇总:...
day09【继承、super、this、抽象类】 day10【接口、多态】 day11【final、权限、内部类、引用类型】 此课程全部课程资料获取: JavaEE基础学习资料地址汇总:...
day09【继承、super、this、抽象类】 day10【接口、多态】 day11【final、权限、内部类、引用类型】 此课程全部课程资料获取: JavaEE基础学习资料地址汇总:...
day09【继承、super、this、抽象类】 day10【接口、多态】 day11【final、权限、内部类、引用类型】 此课程全部课程资料获取: JavaEE基础学习资料地址汇总:...