夜光带你走进 Java 成神之路(二)擅长的领域

编程入门 行业动态 更新时间:2024-10-18 02:28:43

夜光<a href=https://www.elefans.com/category/jswz/34/1769690.html style=带你走进 Java 成神之路(二)擅长的领域"/>

夜光带你走进 Java 成神之路(二)擅长的领域

夜光序言:

 

从前之前,梦心梦如烟,恰如西风恨柳边。白发又添,不归思故颜,莫言重逢泪双面……

 

 

 

 

 

 

 

 

 

 

 

 

 

 

正文:

                           以道御术 / 以术识道

package day1;public class Bird extends Animal{private int wing;private int leg;@Overridepublic void  eat(){//重写一下父类的eat方法System.out.println("鸟儿正在喂食~");}//直接生成带参构造public Bird(String name, int weight, String sex, int wing, int leg) {super(name, weight, sex);this.wing = wing;this.leg = leg;}//再写一个无参构造public Bird(){//什么都不写的话,默认调用父类的super}}

 

package day1;public class Animal {private String name;private int weight;private String sex;public void eat(){System.out.println("正在享受美食~");}public void run(){System.out.println("正在散步");}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getWeight() {return weight;}public void setWeight(int weight) {this.weight = weight;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public Animal(String name, int weight, String sex) {this.name = name;this.weight = weight;this.sex = sex;}public Animal(){}}
package day1;public class Dog extends Animal{private int leg;@Overridepublic void eat(){System.out.println("在啃骨头~");}public Dog(String name, int weight, String sex, int leg) {super(name, weight, sex);this.leg = leg;}public Dog(){//super()}public int getLeg() {return leg;}public void setLeg(int leg) {this.leg = leg;}}

 

 

 

 

 

 

 

 

package day1;public class Test1 {public static void main(String[] args) {Animal[] animals = new Animal[2]; //夜光:使用数组创建两个元素//父类引用指向子类变量animals[0] = new Bird("凤凰",1111,"女",1,1);animals[1] = new Dog("麒麟",1111,"男",1);//用一个foreach循环遍历一下for(Animal an : animals){an.eat();an.run();}}
}

 

 

 

设计一个宠物猫

按照oo的思想,我们会抽象出一个类,表示宠物猫

其中有一个eat方法,表示小猫进食的方法

 

 

package day2;//抽象一个宠物猫类
public class Cat {private String name; //定义一个姓名字段//带参数的构造方法,初始化小猫属性public Cat(String name) {this.name = name;}public void eat(){System.out.println("我是一只猫,叫做:"+this.name+",正在吃鱼");}}

package day2;//测试类
public class Test {public static void main(String[] args) {Student jim = new Student();jim.feed(new Cat("小炎"));  //好好理解一下这句话,new一个对象,并且传入一个参数(name)}
}

 

package day2;public class Dog {private String name;  //姓名字段//构造器public Dog(String name) {this.name = name;}public void eat(){System.out.println("我是一只小狗,叫做:"+this.name+",正在啃骨头");}
}

 

 

但是上面这种方案太繁琐

 

你会发现~每新增一个动物,都需要相应的去修改学员类,增加相应的喂食方法

我们在做项目的时候,是不想频繁修改的

项目的可维护性和可扩展性需要保障

项目经理的职责所在

 


 

为此:可以抽象出一个父类动物类,把ta作为喂食方法的参数

这是允许的,这叫做参数多态

 

 

 

 

 

 

package day2;public class Test1 {public static void main(String[] args) {Student2 student2 = new Student2();student2.feed(new Cat1("小炎"));student2.feed(new Dog1("小貂"));}}
package day2;public class Student2 {//注意:下面这个,参数是父类型动物类型,该父类及其子类的对象都可以作为参数传入public void feed(Aniaml aniaml){aniaml.eat();}}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

更多推荐

夜光带你走进 Java 成神之路(二)擅长的领域

本文发布于:2024-03-13 15:34:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1734295.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:带你   神之   领域   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!