三大特性封装、继承、多态
1、封装,隐藏类的内部实现机制,在不影响使用的情况下改变类的内部结构,同时也保护了数据,对外界它的内部细节是隐藏的,暴露给外界的是它的访问方法。
2、继承,是为了重用父类代码,同时也为实现多态做了铺垫。
3、多态,父类指向子类对象,Parent o=new Child();一个父类,可以指向多个子类。
ps1:向上转型,Parent o=new Child() o只拥有父类中有的方法和变量,如果子类重写了父类的方法,则o可拥有子类的该方法。
方法重载和重写
重载:同一类中方法名相同,参数不同(类型不同、个数不同)
重写:子类实现父类方法,方法名、参数、返回值都相同。
下面代码可以加深理解:
public class A {
public String show(D obj) {
return ("A and D");
}
public String show(A obj) {
return ("A and A");
}
}
public class B extends A{
public String show(B obj){
return ("B and B");
}
public String show(A obj){
return ("B and A");
}
}
public class C extends B{
}
public class D extends B{
}
public class Test {
public static void main(String[] args) {
A a1 = new A();
A a2 = new B();
B b = new B();
C c = new C();
D d = new D();
System.out.println("1--" + a1.show(b));
System.out.println("2--" + a1.show(c));
System.out.println("3--" + a1.show(d));
System.out.println("4--" + a2.show(b));
System.out.println("5--" + a2.show(c));
System.out.println("6--" + a2.show(d));
System.out.println("7--" + b.show(b));
System.out.println("8--" + b.show(c));
System.out.println("9--" + b.show(d));
}
}
运行结果如下:
1--A and A
2--A and A
3--A and D
4--B and A
5--B and A
6--A and D
7--B and B
8--B and B
9--A and D