• 学号 20175201张驰 《Java程序设计》第4周学习总结


    学号 20175201张驰 《Java程序设计》第4周学习总结

    教材学习内容总结

    第5章
    继承:避免多个类间重复定义共同行为,用我们已经有的类,去创建新的类
    任何子类都可以继承它的父类的成员变量,来作为自己的成员变量
    在Java中只有单一继承,即子类只能继承一个父类
    子类继承的方法只能操作子类继承和隐藏的成员变量!
    「用父类声明对象引用,用子类生成对象」就有了多态。

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

    问题1:private 与 protected 的用法?
    问题1解决方案:private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。
    protected:可以被子类,同package下类使用,不对外公开的访问修饰符。protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。
    问题2:extends的用法?
    问题2解决方案:查阅后总结为:继承父类的行为,再扩充父类原本没有的行为。继承时使用extends关键字,private成员也会被继承,但子类无法直接存取,必须通过父类提供的方法来存取(父类愿意提供访问方法的话)
    问题3:super的用法?
    问题3解决方案:总结为:1.取得父类中的方法定义
    2.执行父类中某构造函数
    3.与this只能择一调用,而且一定要在构造函数第一行执行

    代码调试中的问题和解决过程

    问题1:有关abstract的用法

    问题1解决方案: 在输入代码的过程中,总是对这个abstract不明白不了解,故上网查询,参考:https://blog.csdn.net/weixin_41715295/article/details/79319805
    逐渐了解1,abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承并覆盖其中的抽象方法。
    2,abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明(定义)而没有实现,实现部分以";"代替。需要子类继承实现(覆盖)。
    3.注意:有抽象方法的类一定是抽象类。但是抽象类中不一定都是抽象方法,也可以全是具体方法。
    4.abstract修饰符在修饰类时必须放在类名前。
    5.abstract修饰方法就是要求其子类覆盖(实现)这个方法。调用时可以以多态方式调用子类覆盖(实现)后的方法,也就是说抽象方法必须在其子类中实现,除非子类本身也是抽象类。

    课后练习
    所谓“实践是检验真理的唯一标准”,所以为了检查和巩固自己的学习,我用IDEA讲课后习题联系了一遍
    (9)选A:A类没有不带参数的构造方法
    class A {
    public int i=0;
    A(int m) {
    int i = 1;
    }
    }
    public class B extends A {
    super();
    B(int m) {
    int i = 2;
    }
    public static void main(String args[])
    {
    B b = new B(100);
    System.out.println(b.i);
    }
    }
    3(1)15.0;8.0
    class A{
    double f(double x,double y) {
    return x+y;
    }
    }
    class B extends A {
    double f(int x,int y) {
    return x*y;
    }
    }
    public class E {
    public static void main(String args[]) {
    B b=new B();
    System.out.println(b.f(3,5));
    System.out.println(b.f(3.0,5.0));
    }
    }
    3(2)11;11
    class A{
    public int getNumber(int a) {
    return a+1;
    }
    }
    class BB extends A {
    public int getNumber(int a) {
    return a+100;
    }

    public static void main(String args[]) {
    A a= new A();
    System.out.println(a.getNumber(10));
    BB b=new BB();
    System.out.println(a.getNumber(10));
    }
    }
    3(3)98.0;9
    class A{
    double f(double x,double y) {
    return x+y;
    }
    static int g(int n) {
    return n*n;

    }
    }
    class B extends A {
    double f(double x,double y) {
    double m = super.f(x,y);
    return m+x*y;
    }
    static int g(int n){
    int m = A.g(n);
    return m+n;
    }
    }
    public class EE {
    public static void main(String args[]) {
    B b=new B();
    System.out.println(b.f(10.0,8.0));
    A a= new B();
    System.out.println(a.g(3));

    }
    

    }
    3(4)120;120;120
    class A {

    int m;
    
    int getM() {
    
        return m;
    
    }
    
    int seeM(){
    
        return m;
    
    }
    

    }

    class B extends A {

    int m;
    
    int getM() {
    
        return m+100;
    
    }
    

    }

    public class EEE {

    public static void main(String args[]) {
    
        B b = new B();
    
        b.m = 20;
    
        System.out.println(b.getM());
    
        A a = b;
    
        a.m = -100;
    
        System.out.println(a.getM());
    
        System.out.println(b.getM());
    
    }
    

    }

    代码托管
    图片.png

    学习进度条
    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 4000行 30篇 400小时
    第三周 2197 4/4 10/10 java学习

  • 相关阅读:
    js函数动态传参
    js 异步加载
    js 遍历
    安卓——implements——OnClickListener
    安卓——BroadcastReceiver
    关于Linux下的硬链接
    Linux 的文件类型
    linux 学习
    虚函数与重载函数的区别
    虚函数和友元
  • 原文地址:https://www.cnblogs.com/20175201zc/p/10559153.html
Copyright © 2020-2023  润新知