做网站需要的知识,wordpress 七牛云上传图片,国内免费的ftp服务器,昆明著名网站建设多态基础了解#xff1a;
面向对象的三大特征#xff1a;封装#xff0c;继承#xff0c;多态。
有了面向对象才有继承和多态#xff0c;对象代表什么#xff0c;就封装对应的数据#xff0c;并提供数据对应的行为#xff0c;可以把零散的数据和行为进行封装成一个整…多态基础了解
面向对象的三大特征封装继承多态。
有了面向对象才有继承和多态对象代表什么就封装对应的数据并提供数据对应的行为可以把零散的数据和行为进行封装成一个整体--对象
但是对象多了之后对象里面的内容共性部分越来越多了由此将共性部分抽取出来放在父类不用在写一遍了---继承
没有继承也就没有多态 案例
package duotai;public class animal {public static void main(String[] args) {
//创建对象(用多态方式//FU fnew ZI();Animal a new Dog();//调用成员变量编译看左边运行也看左边//编译看左边Javac编译代码的时候会看左边的父类中有没有这个变量如果有编译成功如果没有编译失败。//运行看左边javac运行代码的时候实际上获取的就是左边父类中成员变量的值System.out.println(a.name);//结果是动物//当注释掉animal中的name这里会报错因为父类中没有这个变量
//调用成员方法编译看左边运行看右边//编译看左边Javac编译代码的时候会看左边的父类中有没有这个方法如果有编译成功如果没有编译失败。a.show();//运行结果是Dog
//理解//方法重写会覆盖我们是用父类调用的之前继承是用dog自己调用的}
}
class Animal{String name动物;//父类public void show(){System.out.println(动物展示);}
}
class Dog extends Animal{String name狗;Overridepublic void show() {System.out.println(狗展示);}
}
class Cat extends Animal{String name猫;Overridepublic void show(){System.out.println(猫展示);}
} Java加载字节码文件的时候先加载父类字节码文件的
多态调用内存图解
这个视频的9分09秒开始讲的面向对象进阶-10-多态中调用成员的特点_哔哩哔哩_bilibili 多态的优势和弊端 多态的弊端不能调用子类中特有功能 在这个视频9分5秒开始面向对象进阶-11-多态的优势和弊端_哔哩哔哩_bilibili 案例综合练习 代码
package duotai.anli;public class Animal {private String age;private String color;public Animal() {}public Animal(String age, String color) {this.age age;this.color color;}/*** 获取* return age*/public String getAge() {return age;}/*** 设置* param age*/public void setAge(String age) {this.age age;}/*** 获取* return color*/public String getColor() {return color;}/*** 设置* param color*/public void setColor(String color) {this.color color;}
public void eat(String something){System.out.println(动物再吃something);
}}package duotai.anli;public class cat extends Animal {public cat() {}public cat(String age, String color) {super(age, color);}Overridepublic void eat(String something) {System.out.println(getAge()岁的getColor()的猫眯着眼睛侧着头吃something);}
}package duotai.anli;public class Dog extends Animal {public Dog() {}public Dog(String age, String color) {super(age, color);}//行为eatOverridepublic void eat(String something){System.out.println(getAge()岁的getColor()的狗两只前腿死死抱住something猛吃);}public void lookhome(){System.out.println(狗在看家);}
}package duotai.anli;public class person {private String name;private int age;public person(int age, String name) {this.age age;this.name name;}public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}//行为public void keeppet(Dog dog,String something) {System.out.println(年龄为age岁的name养了一只dog.getColor()dog.getAge()岁的狗);dog.eat(something);}public void keeppet(cat cat,String something) {System.out.println(年龄为age岁的name养了一只cat.getColor()cat.getAge()岁的猫);cat.eat(something);}///可用多态来写public void keeppetyouhua(Animal animal,String something) {if (animal instanceof Dog d3){System.out.println(年龄为age岁的name养了一只animal.getColor()animal.getAge()岁的狗);d3.eat(something);}else if (animal instanceof cat c3){System.out.println(年龄为age岁的name养了一只animal.getColor()animal.getAge()岁的猫);c3.eat(something);}else {System.out.println(没有这种动物);}}
}测试
package duotai.anli;public class text {public static void main(String[] args) {//创建对象并调用方法//ctrl p可以查看要传递啥//shft f6批量修改person p1new person(30,老王);Dog d new Dog(2,黑);p1.keeppet(d,骨头);person p2new person(25,老李);cat cat new cat(3,灰);p2.keeppet(d,鱼);System.out.println();System.out.println(------------------------------);person p3new person(30,老王);Dog d3new Dog(2,黑);cat c3 new cat(3,灰);p3.keeppetyouhua(d3,骨头);p3.keeppetyouhua(c3,鱼);}
}运行结果