java课时六_面向对象(3)

禁止子类重写
在方法(对象方法)前加上final。

针对final讨论

final意为到此为止
1、类:

public final class ClassName{...};//表示该类不允许继承
public abstract class ClassName{...};//鼓励继承该类

2、变量:

final int x;//定义常量
public static final double PI=3.14159;
double static final Point CPOINT=new Point(2,3);//永远指向一个对象,但对象内部的值仍可以改变

讨论参数传递

java只有值传递

public void swap(int a,int b);//对实参无影响
public void swap(Point p1, Point p2);//对实参无影响
public class Value{
int x;
int y;
}
public static void swap(Value v){
	int t=v.x;
	v.x=x.y;
	v.y=t;
}//x与y的值交换,但实参地址仍未改变

方法重载

void g(object o){...};
void g(Point p){...};
g(NULL);//报错
g((object)null);//不报错

接口

接口关键字:interface
接口中自动定义为常量或抽象方法即public static final或public abstract
实现接口关键字:implements
接口特性:
1、接口中常量默认为public static final,并且也只能是public static final。
2、接口中只能定义抽象方法,而且这些方法默认为public abstract ,并且也只能是public abstract。
3、接口可以继承其他接口,并添加新的属性和抽象方法。
4、在接口中声明方法时,不可以使用其他修饰符,如nativa,static,final,private,protected等。
5、java中不允许类的多继承,但允许接口的多继承。
6、不允许创建接口实例,但允许定义接口类型的引用变量。改变量引用实现了该接口的类的实例。
7、一个类只能继承另外一个类,但能同时实现多个接口,并且重写的方法必须声明为public。
举例:用接口实现栈

public interface Stackable{
	public void push(Object o);
	public Object pop();
}
public class StackA implements Stackable{
...;
}//实现接口
public class StackUser{//只能针对接口写
	private Stackable st=null;
	public void process(){
		String msg=" ";
		st.push(msg);
	}
	//方法一:构造器
	public StackUser(Stackable st){
		this.st=st;
	}
	//方法二,set
	public void SetStack(Stackable st){
		this.st=st;	
	}
}
public class Entry{
	public static void main(String []args){
		StackA sta=new StackA();
		StackUser=new StackUser(sta);
	}
}

猜你喜欢

转载自blog.csdn.net/NiZjiTouA/article/details/94388357