面向对象 - 多态
所谓多态就是一个对象在不同场景下表现出来的不同状态和形态
多态语法其实就是对对象的使用场景进行了约束
一个对象可以使用的功能取决于引用变量的类型
Person p = new Person();
p.testPerson();
Person p1 = new Boy();
p1.testPerson();
//p1.testBoy();
Person p2 = new Girl();
p2.testPerson();
//p2.testGirl();
Boy boy = new Boy();
boy.testBoy();
Girl girl = new Girl();
girl.testGirl();
}
}
class Person {
void testPerson() {
System.out.println("test person...");
}
}
class Boy extends Person {
void testBoy() {
System.out.println("test boy ...");
}
}
class Girl extends Person {
void testGirl() {
System.out.println("test girl ....");
}
}
一个类中,不能重复声明相同的方法,也不能声明相同的属性
这里相同方法指的是方法名,参数列表相同,和返回值类型无关 参数也属于声明方法的一部分
如果方法名相同,参数列表不同(个数,顺序,类型)不相同,会认为是不同的方法,只不过名称一样
这个操作在Java中称之为方法的重载
构造方法也存在方法的重载
User14 user = new User14("zhangsan");
user.login(1896063527);
user.login("123123");
user.login("zhangsan","123123");
}
}
class User14 {
User14() {
System.out.println("user...");
}
User14(String name) {
System.out.println("user..." + name); //调用这个构造方法
}
void login( String account,String password ) {
System.out.println("账号密码登录");
}
void login(int tel) {
System.out.println("手机验证码登录");
}
void login(String wx) {
System.out.println("微信支付宝登录");
}
}
如果在一个构造方法中,想要调用其他的构造方法,那么需要使用特殊关键字:this
User141 user1 = new User141();
// User141 user2 = new User141("zhangsan");
// User141 user3 = new User141("zhangsan","man");
}
}
class User141 {
User141() {
this("zhangsan");
}
User141( String name ) {
this(name,"man");
}
User141( String name, String sex ) {
System.out.println(name + "," + sex);
}
}
AAA aaa = new BBB();
test(aaa);
// 多态其实就是约束了对象的使用场景
// 方法的重载:方法名相同,参数列表不同(个数,顺序,类型)
// AAA -> Object
// BBB -> AAA -> Object
}
static void test( Object aaa ) {
System.out.println("aaa");
}
static void test( BBB bbb ) {
System.out.println("bbb");
}
}
class AAA {
}
class BBB extends AAA {
}
BBB aaa = new BBB();
test(aaa);
// 多态其实就是约束了对象的使用场景
// 方法的重载:方法名相同,参数列表不同(个数,顺序,类型)
// AAA -> Object
// BBB -> AAA -> Object
}
static void test( Object aaa ) {
System.out.println("aaa");
}
// static void test( BBB bbb ) {
// System.out.println("bbb");
// }
}
class AAA {
}
class BBB extends AAA {
}
BBB 找不到方法找父类 AAA