网站管理员权限设置,ip地址直接访问网站,渠道网络推广,南京英文网站建设目录
第1关#xff1a;封装、继承和多态进阶#xff08;一#xff09;
报错总结 注意事项#xff1a;
第2关#xff1a;封装、继承和多态进阶#xff08;二#xff09; 源码#xff1a;
报错总结 注意事项#xff1a;
思维导图免费制作网站#xf…目录
第1关封装、继承和多态进阶一
报错总结 注意事项
第2关封装、继承和多态进阶二 源码
报错总结 注意事项
思维导图免费制作网站 功能强大 学习方法头歌中左侧知识点的解释还有右侧代码的提示模块非常清晰我们可以 ①观察代码整体模块②尝试写代码③不清楚知识点再将左侧解析放在实例当中去看 [那些注释都给我们写好了对应注释去敲代码] 如果我们实在啥也不会参考他人代码那么也不要全部照抄 【例如】抄完有参构造实例化对象Dog后自己去敲Cat 第1关封装、继承和多态进阶一 package case1;import java.util.Scanner;public class Task1 {public static void main(String[] args) {Scanner sc new Scanner(System.in);String dogName sc.next();String dogSex sc.next();String dogColor sc.next();String catName sc.next();String catSex sc.next();double catWeight sc.nextDouble();/********* begin *********/Dog dog new Dog(dogName,dogSex,dogColor); // 通过有参构造函数实例化Dog类对象dogdog.talk(); // dog调用talk()方法dog.eat(); // dog调用eat()方法/********* end *********//********* begin *********/Cat cat new Cat(catName,catSex,catWeight);// 通过有参构造函数实例化Cat类对象catcat.talk();// cat调用talk()方法cat.eat(); // cat调用eat()方法/********* end *********/}
}abstract class Pet {/********* begin *********/String name;// 构造函数初始化name和sexString sex;Pet(){} // 定义抽象类Pet作为基类Pet(String name,String sex){ //类中定义2个this.name name;//封装属性namethis.sex sex;//封装属性sex}public abstract void talk(); // 声明抽象方法talk()public abstract void eat(); // 声明抽象方法eat()/********* end *********/
}class Dog extends Pet { // Dog类继承自Pet类/********* begin *********/String color;//封装属性colorpublic Dog(String name,String sex,String color){this.name name; // 构造函数初始化name、sex和colorthis.sex sex;this.color color;}public void talk(){ // 实现自己的talk()方法和eat()方法System.out.println(名称 name 性别 sex 颜色 color 汪汪叫);} // talk()输出名称name性别sex颜色color汪汪叫public void eat(){ // eat()输出name吃骨头System.out.println(name 吃骨头);}/********* end *********/
}class Cat extends Pet { // Cat类继承自Pet类 /********* begin *********/double weight; Cat(String name,String sex,double weight){this.name name; // 构造函数初始化name、sex和weightthis.sex sex;this.weight weight; //封装属性weight}// 实现自己的talk()方法和eat()方法public void talk(){System.out.println(名称 name 性别 sex 体重 weight kg喵喵叫);// talk()输出}public void eat(){System.out.println(name 吃鱼); // eat()输出}/********* end *********/
}
报错总结 注意事项 1. 最头疼的一个问题没有代码题目本身这里显示有问题。代码部分明明正确啊 2. 此处的new 后面应该是Dog类 Dog dog new Dog(dogName,dogSex,dogColor);3.此处后面无标点符号 Pet(){} 4. 抽象方法声明 1.public公有的可以被该类的和非该类的任何成员访问。2.private私有的仅仅可以被该类的成员访问任何非该类的成员一概不能访问。主要是隐藏数据来保证数据的安全性3.protected保护的仅仅可以被子类和类本身还有同一个包里的类访问 public abstract void talk(); 自动默认public类型代码中所有的public都可以省去不写 第2关封装、继承和多态进阶二 源码
package case2;import java.util.Scanner;public class Task2 {public static void main(String[] args) {Scanner sc new Scanner(System.in);String cName sc.next();String cSex sc.next();int cAge sc.nextInt();String eName sc.next();String eSex sc.next();int eAge sc.nextInt();// 创建测试类对象testPerson test;// 创建Person类对象person1,引用指向中国人,通过有参构造函数实例化中国人类对象Person person1 new Chinese(cName,cSex, cAge);showEat(person1);// 通过showEat()方法调用Chinese的eat()方法//showEat(new Chinese(cName,cSex,cAge));// 创建Person类对象person2,引用指向英国人,通过有参构造函数实例化英国人类对象Person person2 new English(eName,eSex,eAge);showEat(person2);// 通过showEat()方法调用English的eat()方法// 强制类型转换(向下转型) 调用Chinese类特有的方法shadowBoxing()/********* begin *********/Chinese d (Chinese)person1;d.shadowBoxing();/********* end *********/// 强制类型转换(向下转型) 调用English类特有的方法horseRiding()/********* begin *********/English e (English)person2;e.horseRiding();/********* end *********/}/********* begin *********/public static void showEat(Person p){// 定义showEat方法使用父类作为方法的形参实现多态p.eat();//传入的是哪个具体对象就调用哪个对象的eat()方法}/********* end *********/
}abstract class Person {// 抽象类Person 封装属性name、sex和age/********* begin *********/public String name; // 构造函数初始化name、sex和agepublic String sex;public int age;abstract void eat();// 声明抽象方法eat()/********* end *********/
}class Chinese extends Person { // Chinese类继承自Person类/********* begin *********/public String name; // 构造函数初始化name、sex和agepublic String sex;public int age;Chinese(String name,String sex,int age){this.name name;this.sex sex;this.age age;}void eat(){// 重写父类方法eat()System.out.println(姓名 name 性别 sex 年龄 age 我是中国人我喜欢吃饭);}void shadowBoxing(){// 定义子类特有方法,当父类引用指向子类对象时无法调用该方法 输出System.out.println(name在练习太极拳);}/********* end *********/
}class English extends Person { // English类继承自Person类/********* begin *********/String name;// 构造函数初始化name、sex和ageString sex;int age;English(String name,String sex,int age){this.name name;this.sex sex;this.age age;}void eat(){// 重写父类方法eat() 输出System.out.println(姓名 name 性别 sex 年龄 age 我是英国人我喜欢吃三明治);}void horseRiding(){System.out.println(name 在练习骑马);// 定义子类特有方法,当父类引用指向子类对象时无法调用该方法 输出}/********* end *********/
}
报错总结 注意事项 1.看见题目注释位置是单引号一开始打了单引号 单引号引的数据 是char类型的 单引号只能引一个字符表示单个字符 双引号双引号引的数据 是String类型的 而双引号可以引0个及其以上引用字符串 报错原因定义的String类型 System.out.println(name在练习太极拳); 2. 最容易漏掉“ ” Java当中有分号Python因为简单没有分号 思维导图免费制作网站 功能强大
https://www.processon.com/diagramshttps://www.processon.com/diagrams