JAVA学习之抽象类和接口
2012-03-19 21:29
399 查看
JAVA接口和抽象了简单介绍:
1.抽象类:具有抽象方法的类,叫做抽象类。抽象方法:申明方法,但不实现,没有方法体。对于抽象类不能实例化,只能申明; 只能通过其子类来实现;public class AbstractDemo { public static void main(String[] args) { A a =null;//编译不报错 a=new A();//无法实例化,错误 } } abstract class A{ abstract void fun(); }
当子类是抽象类的是可以不用重写父类的方法;若不是就必须实现父类的全部的抽象方法;
注意:1).子类覆写父类的方法的时候要注意,子类方法的访问权限一定要大于等于父类的方法的访问权限;
2).抽象类不能用final修饰;
3).抽象类中允许有构造方法;但此构造方法不能直接调用,必须通过子类调用;子类对象实例化的过程,总是先去调用父类的构造方法;
2.接口:接口是一个特殊的抽象类,有抽象方法和全局常量组成;
注意:1).一个类可以实现多个接口; A implement B,C
2).一个类既要继承一个抽象类,又要实现一个接口:calss 子类 extends 抽象类 implement 接口A,接口B{}
3).一个抽象类可以实现多个接口,但是一个接口不能继承抽象类;但是一个接口可以继承多个接口;
3.抽象类的应用;抽象类的最大的应用就是模板设计;
假设:人分为两种:工人和学生;
1)工人和学生都有姓名和年龄,但是工人有工资,学生有成绩;
2)工人和学生都可以说话,但是说话的内容部一样;
代码如下:
abstract class Person{ private String name; private int age; public Person(String name, int age) { super(); this.name = name; this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } public abstract void say(); } class Student extends Person{ public Student(String name, int age,int score) { super(name, age); this.score=score; } private int score; public void setScore(int score) { this.score = score; } public int getScore() { return score; } @Override public void say() { System.out.println("学生说:"+"\t"+"姓名是:"+super.getName()+"\t"+" 年龄是:"+ super.getAge()+"\t"+"成绩是:"+this.getScore()); } } class Teacher extends Person{ private int salary; public Teacher(String name, int age,int salary) { super(name, age); this.salary=salary; } @Override public void say() { System.out.println("工人说:"+"\t"+"姓名是:"+super.getName()+"\t"+" 年龄是:"+super.getAge()+ "\t"+"工资是:"+this.getSalary()); } public void setSalary(int salary) { this.salary = salary; } public int getSalary() { return salary; } } public class AbstractDemo { public static void main(String[] args) { Person p1=new Student("张三", 25, 59); Person p2=new Teacher("李四", 23, 998); p1.say(); p2.say(); } }
4.接口的应用:接口实际上是作为一个标准存在;例如:电脑实现了USB接口,打印机,U盘等等都实现了此标准;
interface Friut{ public void eat(); } class Apple implements Friut{ public void eat(){ System.out.println("吃苹果。。。。"); } } class Orange implements Friut{ public void eat(){ System.out.println("吃橘子。。。。"); } } class Factory{ public static Friut getFriut(String s){ Friut f=null; if ("Apple".equals(s)) { f=new Apple(); }else if("Orange".equals(s)) { f=new Orange(); } return f; } } public class Test01 { public static void main(String[] args) { Friut f=Factory.getFriut(args[0]); if (f!=null) { f.eat(); } } }
5.接口和抽象类的区别和联系:
1)抽象类由抽象方法、普通方法、常量、变量、构造方法、全局常量等构成;而接口只能由抽象方法和全局常量组成;
2)定义抽象类用关键字abstract,定义接口用关键字interface;
3)子类用关键字extends继承抽象类,实现类用implements实现接口;
4)一个子类只能继承一个抽象类;而一个子类可以同时实现多个接口;
5)一个抽象类可以实现一个接口,而一个接口不能继承一个抽象类;
6)一个抽象类中允许包含多个接口,一个接口中也可以包含多个抽象类;
7)要继承一个抽象类或者实现一个接口,都必须实现之中的抽象方法;
相关文章推荐
- java学习笔记之—接口和抽象类
- java普通类、抽象类和接口的再学习
- Java学习总结1---类,抽象类,接口
- Java学习笔记<1>(抽象类和接口)
- Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API
- Bravo!Java学习笔记(1)---接口、抽象类、对象克隆、内部类
- Java面向对象学习笔记 -- 5(抽象类、接口)
- java学习之接口和抽象类
- Java学习心得之抽象类和接口
- Java学习之---抽象类与接口
- 【JAVA学习】接口interface和抽象类abstract class的比较
- Java基础学习第九天——多态,抽象类,接口
- 【Java学习笔记】10.继承、抽象类、接口
- 学习篇JAVA之接口和抽象类
- Java学习笔记(六):面向对象、接口和抽象类
- 关于JAVA继承、多态、抽象类、接口等性质的学习(2)
- Java学习笔记 --- 抽象类和接口的区别与联系
- java 从零开始,学习笔记之基础入门<抽象类_接口_多态>(十三)
- Java基础学习笔记09——(final关键字,多态,抽象类,接口)
- 黑马程序员-java学习继承之抽象类、多态和接口