要毕业了啊,要找工作了啊,可是学的什么都忘了,所以现在争取在3月30号之前把Java和Android扫一遍。
求工作啊!
之后要悲剧的准备雅思了,明天开始要准备过猪狗不如的生活了。呀呀,好好学英语,好好写代码,天天向上啊。这次英语过7.5吧。神~保佑。当然我会加油的啦。
1.重载
java中允许同一个类里定义多个同名方法,只要形参列表不同就行。如果同一个类中包含了两个或者两个以上的方法名相同,但形参列表不同,则被称为方法重载。
在Java程序中确定一个方法需要三个要素:
调用者,也就是方法的所属着,既可以是类,也可以是对象;方法名,方法的表示形参列表 注意:方法重载的要求就是同一个类中方法名相同,参数列表不同。至于方法的其他部分例如,方法返回值类型,修饰符等,,与方法重载没有关系。
2.包机制
Java引入包机制,提供了类的多层命名空间,用于解决命名冲突、类文件管理等问题。Java一般将一组功能相关的类放在同一个Package下
3.重写
重写一般使用的情况是在子类继承父类的情况下使用的。子类可以冲父类那里继承某个方法,但是那个方法对子类来说可能是不适用的。所以我们需要重写父类的方法。重写又叫做覆盖。 覆盖所遵循的原则是: 重写的方法必须方法名相同,形参列表相同,也就是函数要有相同的签名。但是方法体可以不同。子类的返回类型应比父类的方法返回类型更小或者相等子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或者相等。子类的访问控制权限应比父类方法的访问控制权限更大或者相等。 注意:子类覆盖了父类的方法之后,子类的对象将无法访问父类中被覆盖的方法,但可以在子类中调用父类被覆盖的方法。如果子类需要在子类中调用父类中被覆盖的方法,则可以使用super(被覆盖的实例方法)或者父类类名作为调用者来调用父类中被覆盖的方法。 重写是针对子类可以访问的的方法来说的,如果父类中有private的访问权限,则该方法中定义了一个与父类private方法具有相同的方法名、相同的形参列表、相同的返回值类型的方法,依然不是重写。
this不能出现在static修饰的方法中,super也不能出现在static修饰的方法中。 重载的和重写的英文是overload和override两个的应用场景不同。重载一般发生在同一个类当中,重写发生在子类和父类之间。
4.Java中的多态
重写可以算Java 中多态中的一种。下面先看一下以下这段代码:
class BaseClass
{
public int book = 6;
public void base()
{
System.out.println("父类的普通方法");
}
public void test()
{
System.out.println("父类的被覆盖的方法");
}
}
public class SubClass extends BaseClass {
public String book = "子类中的书";
public void test()
{
System.out.println("子类覆盖父类的方法");
}
public void sub(){
System.out.println("子类的普通方法");
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BaseClass ployBC = new SubClass();
System.out.println(ployBC.book);
//***********notice*********
ployBC.test();
ployBC.base();
}
}
这里比较特殊的就是
BaseClass ployBC = new SubClass();
变量是属于哪一个的父类还是子类,其实可以这么看 BaseClass ployBC 相当于定义了一个变量,之后使用SubClass来为BaseClass开辟空间。由于多态性,子类可以有父类额外的方法,并且继承父类的可见方法。 但是由于变量之前已经确定是父类的类型所以只会拥有父类该有的空间。由于字段是没有多态性而只有方法具有多态性的。 因此在定义这样的变量时候,重写的方法会被调用,字段会保持不变。
在Java中子类开辟的对象可以直接赋值给父类,这种称为向上转型。
向上转型由
系统直接完成。
引用类型之间可以进行强制转换。两个类之间要有继承关系才可以进行类型转换。因此在转换的时候可以使用instanceof运算符来判断是否可以转换成功。