------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1. Java中的类和接口,都是隶属于某一个包的。
我们在使用类或接口时,就需要引入包或者包.类
如果是我们自己创建了一个类,那么我们也应先创建一个包,把这个类放在包中,如果其他类需要引用这个类,就可以导入这个包或者导入这个包.类
2. 继承:
权限修饰符 class 子类名 extends父类名
上面这是animal类的程序。
子类cat,继承于animal,然后创建实例test,这个实例对象就可以调用父类的属性和子类的属性,父类的方法和子类的方法。
当子类中定义了和父类相同的属性或方法时,在子类的类函数体中,通过super来调用父类的属性和方法,以防歧义。
如果是在子类的构造方法中调用父类的构造方法,此super关键字必须写在子类构造方法的第一行。
3. 将子类对象的实例赋值给父类对象,系统自动会完成子类对象到父类对象的类型转换。这称为向上转型。
4. 要想使父类向下转型,需要把父类赋值给向上转型后的子类。
publicstaticvoid main(String[] args)
{
cat ca=new cat();//定义子类
animal ani2=ca;//cat向animal转型,先向上转型在赋值给父类
cat ca2=(cat)ani2;//再把这个父类赋值给子类,这才是正确的向下转型
}
从ca2的属性中可以看出,它能调用父类和子类的的属性和方法。
5. 使用final修饰的类不允许有子类
子类可以继承父类的final方法,但是不能重写父类的final方法,所以如果我们不希望子类重写某个方法时,就可以把该方法什么为final方法。
由于在父类中把run()定义为了final
所以在子类中重写就会出现错误。
到底是哪一个类型,我们可以通过instanceof来判断
对象名1 instanceof 类A
返回的是布尔型,用于判断对象1是否为类A
6. 权限修饰符4种:默认的(即什么都不写)、public、protected、private
6.1 private:只能被本类内部通过类的实例来访问,不能在其他类当中被访问,不能被子类继承。
6.2 默认修饰符:也称为友好的成员变量或方法。只能在本类或同一个包中的其他类中通过类的实例进行访问,也可以被同一个包中的其他类继承,但是不能被不同包中的其他类继承和访问
6.3 Protected修饰符:可以再本类或同一个包中的其他类中通过类的实例访问,也可以被同一个包中的类或不同包中的类继承,但不能被不同包中的其他类访问
6.4 Public:可以别不同包中的类继承和访问。
Private 默认 protected public
权限修饰符中的可见性说明:
|
Private |
默认的 |
Protected |
Public |
本类 |
可见 |
可见 |
可见 |
可见 |
相同包中的其他类 |
|
可见 |
可见 |
可见 |
相同包中的子类 |
|
可见 |
可见 |
可见 |
不同包中的子类 |
|
|
可见 |
可见 |
不同包中的其他类 |
|
|
|
可见 |
7. 方法重载
所谓方法重载,就是在一个类或接口中,有多个相同名称的方法,他们的唯一区别是参数不同。
8.
Cat和dog什么都没有写,就是继承于animal
package aaa;
publicclass animal
{
publicvoid cry(animal a)
{
if(ainstanceof cat)//是否为cat类
{
System.out.println("猫咪咪叫");
}
if(ainstanceof dog)//是否为dog类
{
System.out.println("狗汪汪叫");
}
}
publicstaticvoid main(String args[])
{
animal ani=new animal();
cat ca=new cat();
ani.cry(ca);
dog dg=new dog();
ani.cry(dg);
}}
运行结果:
8. 多态是一种特性,是用于描述其他东西的,它什么都不是。
9. 比如重载就有多态性,覆写也具有多态性。
10. 重载是很多方法名称相同,但参数不同,重载方法前面都有void。而覆写,是父类中定义了一个方法,在子类中定义了一个相同的方法。
11. 传值引用和传址引用
传值引用主要针对数据类型操作,只是传递数据,而传址引用主要是针对对象操作,它传递的是一个对象句柄的拷贝,也就形成了多个变量操作一个对象的局面,任何一个针对句柄操作的变量,都会影响到其他的变量。
传值引用的效果如上,改变a的值,不改变b的值。
上面是传址的效果,改变了stu1.x的值,也就同时改变了stu2.x的值。
12.封装:封装就是不让用户或非本程序编写者看到代码内幕。
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------