JAVA学习笔记:java语言高级特性(接口)

接口

1、使用interface修饰,接口中全是抽象方法
例如:

public interface Animal{
	//只有抽象方法
	public void work();
	public void eat();
}

2、接口和抽象类区别
1)抽象类的本质仍然是类,还是使用关键字class,除了可以写抽象方法和不能使用new关键字外,其他的和普通类一样
2)接口是另一种类型,本质和类不同(理解上可以认为一个抽象类抽象到极致,即全是抽象方法,就变成了抽象类;这个仅限于便于理解)
3)声明类的关键字是class,声明接口的关键字是interface
4)抽象类是用来被继承的,java中的类是单继承
5)接口是用来被类实现的,java中的接口可以被多实现,接口也可以继承是多继承
注:继承的关键字是extends,实现的关键字是implements

3、接口中的方法都是抽象方法
接口中可以不写方法,但只要在接口中写方法,这个方法就必须是抽象方法
例如:

public interface Animal{
			public abstract void run();

			//默认就是public abstract修饰的
			void eat();
			//默认有abstract
			public void sleep();
		}

4、接口中的变量都是静态常量(public static final修饰)
接口中可以不写任何属性,但如果写属性就必须是public static final修饰的静态常量。
注:可使用接口名直接访问,静态的public static修饰;
因为接口中的变量是静态常量,并且接口中不能编写静态代码块,所有声明的同时必须进行赋值
例如:

public interface Action{
			public static final String NAME = "tom";
			//默认就是public static final修饰的
			int AGE = 20;
		}
		main:
			System.out.println(Action.NAME);
			System.out.println(Action.AGE);

5、一个类可以实现多个接口,使用,隔开
例如:

public  Student implements A,B{
	//实现多个接口,要实现接口中的所有抽象方法;否则就要声明成抽象类
	//Student 对象可以使用A、B、Student类型的的引用指向
	
}
main:
			A s1 = new Student();
			B s2 = new Student();
			Studnet s3=new Student();:
			s1只能调用接口A中声明的方法以及Object中的方法
			s2只能调用接口B中声明的方法以及Object中的方法
			s3可以使用AB接口中声明的方法以及Object中的方法
			

6、一个接口可以继承多个父接口
例如:

public interface A{
			public void testA();
		}

		public interface B{
			public void testB();
		}
		
		//接口C把接口A B中的方法都继承过来了
		public interface C extends A,B{
			public void testC();
			//继承了AB接口的抽象方法,要实现C接口ABC三个接口的所有抽象方法都有实现
		}
本文是一个word讲义 介绍了 Figure circle Rectangle等类在接口中计抽象类中的用法 抽象类 接口多态 public class Polymorphism { public static void main(String args[]) { Triangle t=new Triangle(5.0,2.0); t.show_area(); Rectangle r=new Rectangle(3.0,4.0); r.show_area(); Circle c=new Circle(10.0); c.show_area(); } } abstract class Figure { protected double x=10.0,y=5.0; abstract void show_area(); } class Triangle extends Figure { Triangle(double a,double b) { x=a; y=b; } void show_area() { System.out.println("triangle:"+(0.5*x*y)); } } class Rectangle extends Figure { Rectangle(double a,double b) { x=a; y=b; } void show_area() { System.out.println("rectangle:"+(x*y)); } } class Circle extends Figure { Circle(double a){x=a;} final double pi=3.1416; void show_area() { System.out.println("circle:"+(pi*x*x)); } } package inf; interface Figure { abstract double area(); } //Rectangle.java package inf; /** * * @author tai */ public class Rectangle implements Figure{ double width,height; public Rectangle(double w,double h) //构造方法 { width=w; height=h; } public double area(){ return (width * height); } } //Triangle.Java package inf; /** * * @author tai */ class Triangle implements Figure { double a; double b; double c; Triangle(double a,double b,double c) { this.a=a; this.b=b; this.c=c; } public double area() { double p=(a+b+c)/2; return Math.sqrt(p*(p-a)*(p-b)*(p-c)); } } //Circle.java package inf; /** * * @author tai */ class Circle implements Figure { double radius; Circle(double radius) { this.radius=radius; } public double area() { return Math.PI*radius*radius; } } 测试一: public class Test4 { public static void main(String args[]) { Triangle t=new Triangle(5.0,6.0,7.0); System.out.println("三角形面积="+t.area()); Rectangle r=new Rectangle(3.0,4.0); System.out.println("矩形面积="+r.area()); Circle c=new Circle(10.0); System.out.println("圆的面积="+c.area()); } } 测试二: package inf; import javax.swing.JOptionPane; public class Test5 { public static double totalArea1(Figure f[]) { double totalArea=0; for(Figure f1:f){ totalArea+=f1.area(); } return totalArea; } public static void main(String args[]) { Figure f[] =new Figure[3];//为什么 f[0]=new Triangle(5.0,6.0,7.0); f[1]=new Rectangle(6.0,87.0); String input=JOptionPane.showInputDialog("输入圆的半径"); Double r=Double.parseDouble(input); f[2]=new Circle(r); double totalArea=0; for(Figure f1:f){ totalArea+=f1.area(); } JOptionPane.showMessageDialog(null,"totalarea="+totalArea); JOptionPane.showMessageDialog(null,"totalarea1="+totalArea1(f)); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值