百合文库
首页 > 网文

Java教程-看这个就够了(B)(5)

2023-08-19 来源:百合文库
string name;
int age;}
public class test{
public static void main (String [] args){
Person p= new Person();
p.name="李文"
p.age=-14;/*不封装,就可以通过这种方法随意赋值,没有限制。如果是封装后用set方法,就可以在set中进行控制。
而且,如果以后要把age改为String属性,该怎么办?*/
}
}
5.0多态
多态指的是同一个方法调用,由于对象不同,可能会有不同的行为。现实生活中,同一个方法,具体实现会完全不同。
多态的要点:
1,多态是方法的多态,不是属性的多态(多态与属性无关)
2,多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象。
3,父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。
例子:class animal{
public void shout{叫一声}}

Java教程-看这个就够了(B)


class dog extends animal{public void shout{汪汪汪}}
class cat extends animal{public void shout{喵喵喵}}
test{
main{ dog d=new dog ;d.animalshout}/*dog d传入animalshout 方法,即便animalshout对象是animal,因为传入的是动物中的狗,所以输出是汪汪汪,不是叫一声,如果传入猫什么的也是对应的方法-*/
static animalshout(animal a){a.shout}
}
dog d=new dog();
anmial d=new dog()也是可以的,没有本质区别;
如果没有多态,那就需要方法重载,(具体定义CTRL f搜索),狗一个,猫一个。。。不同的对象重载一个方法,会特别麻烦
5.01对象的转型
顺便解决转型问题
animal d=new dog()
animalshout(d)//把狗对象赋值给动物,编译时编译器认为这是animal,所以调用不了dog的方法编译是不通过的,实际运行才知道是dog。这个过程中把狗转为了动物,是自动转型。

Java教程-看这个就够了(B)


猜你喜欢