Java的特性包括抽象,继承,多态,封装
本片博客主要介绍Java的继承与多态的一些特性
继承注意点:
1.一个类的直接父类只能有一个
2.子类继承父类所有的属性,纵使是私有的属性也是能继承过来,能不能用另说
3.当子类与父类拥有相同的属性时,默认将父类的属性隐藏掉,并没有覆盖掉,但用的
是自己的属性
4.方法的继承,方法的覆盖(重写)
多态的注意点:
1.多态的两种表现形式:重写和重载(判断是否重载不看返回值)
2.重写--运行时多态;重载--编译时多态
以下是一个实例:
Person--父类
Student--子类
Test--测试
Person类代码:
package JavaInheritancePolymorphic;
public class Person {
private String name;
private int age;
public void sayHello()
{
System.out.println("你好");
}
public void introduce()
{
System.out.println("我是人类");
}
}
Student类代码:
package JavaInheritancePolymorphic;
public class Student extends Person {
private String stuNo;
private int age;
public void sayHello(String msg)
{
System.out.println(msg);
}
public void introduce()
{
System.out.println("我是学生");
}
public void goHome(){}
}
Test代码:
package JavaInheritancePolymorphic;
//一个类的直接父类只能有一个
//属性的继承
//子类继承父类所有的属性,纵使是私有的属性也是能继承过来,能不能用另说
//当子类与父类拥有相同的属性时,默认将父类的属性隐藏掉,并没有覆盖掉,但用的是自己的属性
//方法的继承,方法的覆盖(重写)
//多态的两种表现形式:重写和重载(重载不看返回值)
//重写--运行时多态;重载--编译时多态
public class Test {
public static void main(String[] args) {
Student stu = new Student();
//编译的时候就已经知道sayHello调用的是哪一个sayHello方法
stu.sayHello("Hello Java!");
stu.introduce();
//s是Person的引用
//s的实际的对象是Student对象
//s编译的时候以Person身份编译的
//s运行的时候以Student身份运行的
Person s = new Student();
s.introduce();
//虽然Studen类中有goHome()方法,却不能直接"."出来
//直接写s.goHome()会出错
((Student)s).goHome();
System.out.println(stu);
}
}
其中Test包含着多态的体现:
1.Student stu = new Student();
//编译的时候就已经知道sayHello调用的是哪一个sayHello方法
stu.sayHello("Hello Java!");
stu.introduce();
2.//s是Person的引用
//s的实际的对象是Student对象
//s编译的时候以Person身份编译的
//s运行的时候以Student身份运行的
Person s = new Student();
s.introduce();
//虽然Studen类中有goHome()方法,却不能直接"."出来
//直接写s.goHome()会出错
((Student)s).goHome();
结果截图: