• 20145122 《Java程序设计》第4周学习总结


    教材学习内容总结

    第六章

    1.在java中,子类只能继承一个父类。
    2.在java中,继承时使用extends关键字,private成员也会被继承。
    3.检查多态语法逻辑是否正确,方式是从=号右边往左读。
    4.以抽象讲法解释多态,就是使用单一接口操作多种类型的对象。
    5.如果某方法区块中没有任何程序代码操作,可以使用abstract标示该方法为抽象方法,该方法不用撰写{}区块,直接“;”结束即可。
    6.定义不完整的类不能用来生成实例。
    7.被声明为protected的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取。
    8.java中有public,protected与private三个权限关键字,但是实际上有四个权限范围。
    9.想取得父类中的方法定义,可以在调用方法前加上super关键字;对于父类中的方法权限,只能扩大但不能缩小
    10.如果想执行父类中某构造函数,可以使用super()指定。this()与super()只能选择一个调用,而且一定要在构造函数第一行执行。
    11.如果class之前使用final关键字定义,表示类是最后一个,不会再有子类,不能被继承;定义方法时表示最后一次,子类不可以重新定义final方法
    12.如果定义类没有使用extends关键字继承任何类,一定是继承java.lang.Object;在java中,任何类追溯至最上层父类,一定就是java.lang.Object。

    第七章

    1.对于“定义行为”,可以使用interface关键字定义,接口中的方法不能操作,直接标示为abstract,而且一定是public。
    2.类要接口操作,必须使用implements关键字。
    3.操作某接口时,对接口中定义的方法有两种处理方式,一是操作接口中定义的方法,二是再度将该方法标示为abstract.
    4.类可以操作两个以上的类,也就是拥有两种以上的行为。类可以同时继承某个类,并操作某些接口。
    5.enum可用于定义枚举常数,继承自java.lan.Enum。

    教材学习中的问题和解决过程

    刚开始还不是很理解本章内容,具体不知道怎么实践,代码运行老是出错。后来试着在NetBeans上新建几个类java文件定义子类继承父类之后问题便得到了解决。
    P159的Role父类代码

    package rpg;
    
    public class Role {
        private String name;
        private int level;
        private int blood;
        
        public int getBlood() {
            return blood;
        }
    
        public void setBlood(int blood) {
            this.blood = blood;
        }
    
        public int getLevel() {
            return level;
        }
    
        public void setLevel(int level) {
            this.level = level;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
    

    然后分别定义了Magician和SwordsMan继承Role类。

    package rpg;
    
    public class Magician extends Role {    
        public void fight() {
            System.out.println("魔法攻击");
        }
        
        public void cure() {
            System.out.println("魔法治疗");
        }
    }
    
    
    package rpg;
    
    public class SwordsMan extends Role {
        public void fight() {
            System.out.println("挥剑攻击");
        }
    }
    

    最终将RPG运行得到结果。

    package rpg;
    
    public class RPG {
        public static void main(String[] args) {
            demoSwordsMan();
            demoMagician();
        }
    
        static void demoSwordsMan() {
            SwordsMan swordsMan = new SwordsMan();
            swordsMan.setName("Justin");
            swordsMan.setLevel(1);
            swordsMan.setBlood(200);
            System.out.printf("劍士:(%s, %d, %d)%n", swordsMan.getName(), 
                    swordsMan.getLevel(), swordsMan.getBlood());
        }
    
        static void demoMagician() {
            Magician magician = new Magician();
            magician.setName("Monica");
            magician.setLevel(1);
            magician.setBlood(100);
            System.out.printf("魔法師:(%s, %d, %d)%n", magician.getName(), 
                    magician.getLevel(), magician.getBlood());
        }
    }
    

    P201代码学会用接口定义行为,并且成功运行了。

    package ocean;
    
    
    public class Anemonefish extends Fish {
       public Anemonefish(String name) {
           super(name);
       }
       
        @Override
        public void swim() {
            System.out.printf("小丑鱼 %s 游泳%n", name);
        }
    }
    
    package ocean;
    public abstract class Fish implements Swimmer {
        protected String name;
        public Fish(String name) {
            this.name = name;
        }
        public String getName() {
            return name;
        }
        @Override
        public abstract void swim();
    }
    
    package ocean;
    
    public class Human implements Swimmer {
        private String name;
        public Human(String name) {
            this.name = name;
        } 
        public String getName() {
            return name;
        }
        
        @Override
        public void swim() {
            System.out.printf("人类 %s 游泳%n", name);
        }
    }
    
    package ocean;
    
    public class Piranha extends Fish {
       public Piranha(String name) {
           super(name);
       }
       
        @Override
        public void swim() {
            System.out.printf("食人鱼 %s 游泳%n", name);
        }    
    }
    
    package ocean;
    public class Shark extends Fish {
       public Shark(String name) {
           super(name);
       }
       
        @Override
        public void swim() {
            System.out.printf("鲨鱼 %s 游泳%n", name);
        }
    }
    
    package ocean;
    
    public class Submarine implements Swimmer {
        private String name;
        
        public Submarine(String name) {
            this.name = name;
        }
        
        public String getName() {
            return name;
        }
        
        @Override
        public void swim() {
            System.out.printf("潜水艇 %s 潜行%n", name);
        }
    }
    
    package ocean;
    
    public interface Swimmer {
        public abstract void swim();
    }
    
    package ocean;
    public class Ocean {
        public static void main(String[] args) {
            doSwim(new Anemonefish("尼莫"));
            doSwim(new Shark("兰尼"));
            doSwim(new Human("贾斯丁"));
            doSwim(new Submarine("黄色一号"));
        }
    
        static void doSwim(Swimmer swimmer) {
            swimmer.swim();
        }
    }
    

    结果为

    本周代码托管截图

    其他(感悟、思考)

    本周的学习任务很多,课本上的知识也很难一下子全部消化吸收,还是要看平时积少成多,实践为主。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    第一周 100/100 2/2 10/10
    第二周 150/250 1/3 10/20
    第三周 100/350 1/4 10/30
    第四周 320/670 1/5 30/60
  • 相关阅读:
    Java入门 第二季第三章 继承
    湖南长沙IOS(xcode swift) 开发交流群
    C++对象模型——"无继承"情况下的对象构造(第五章)
    算术与逻辑运算指令具体解释
    linux中man手冊的高级使用方法
    Swift 数组
    webservice Connection timed out
    创建SharePoint 2010 Timer Job
    指向函数的指针数组的使用方法
    修改Tomcat Connector运行模式,优化Tomcat运行性能
  • 原文地址:https://www.cnblogs.com/20145122chengzhiyin/p/5324301.html
Copyright © 2020-2023  润新知