java学习(二)

学号 20189214 《Java程序设计》第二周学习总结

教材学习内容总结

java类

建立java对象须要相似的模板,即类(class)
java对象也拥有属性和可以执行的动做。
属性叫作字段(field),而动做叫做方法(method)
字段和方法都是可选的
类是java程序的基本构建模块。java中的全部的程序元素,必须位于一个类中。一个公有类的定义必须存放在一个文件中,这个文件名要和类名相同。html

构造方法

每一个类至少有一个构造方法。若是没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。
构造方法用于构建一个对象。与一个方法的不一样在于构造方法不须要有返回值,甚至不须要有void类型的返回值。构造方法能够没有参数。java

类成员访问控制修饰符

类成员(方法、字段、构造方法等)能够具有4中访问控制级别之一:学习

  • public 对全部类可见
  • protected 对本包和对全部子类可见
  • private 仅对本类可见
  • default 对本包可见

建立对象

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字new来建立一个对象。
  • 初始化:使用new建立对象时,会调用构造方法初始化对象。

超类的构造方法

若是调用子类的构造方法来实例化一个子类时,spa

  1. 首先会调用父类的无参数构造方法
  2. 而后父类调用父类的构造方法。
  3. 直到调用到java.lang.Object类的构造方法。

import 关键字

为了可以使用某一个包的成员,咱们须要在 Java 程序中明确导入该包。使用 "import" 语句可完成此功能。
在 java 源文件中 import 语句应位于 package 语句以后,全部类的定义以前,能够没有,也能够有多条,其语法格式为:设计

  • import payroll.*;
  • import payroll.Employee;

还能够经过使用该类的彻底限定名称3d

java.io.File.file = new java.io.File(filenames)

封装和访问控制

封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。调试

封装的优势:code

  • 良好的封装可以减小耦合。
  • 类内部的结构能够自由修改。
  • 能够对成员变量进行更精确的控制。
  • 隐藏信息,实现细节。

从一个静态方法的内部,不能调用实例方法或实例字段。但从一个静态方法中,能够访问其余的静态方法或静态字段htm

声明静态引用变量,该变量会包含一个地址。可是引用的对象是存储在堆中。静态引用变量能够在不一样的对象之间共享相同的对象。对象

加载、链接和初始化

  1. JVM调用类中main方法
  2. JVM将java类的二进制表示加载到内存中。
  3. JVM加载链接其余的类/接口。
  4. JVM初始化整个过程递归地进行。

    继承

  5. 全部的java类都不用显式地扩展一个父类,而是自动地继承了java.lang.Object类
  6. 一个类只有扩展一个类,使用接口也能实现多继承的效果。
  7. 将子类的一个实例赋值给父类的一个引用变量式合法的。
    class 父类 {
    }

    class 子类 extends 父类 {
    }

    方法覆盖

    方法覆盖(method overriding)是子类对父类的容许访问的方法的实现过程进行从新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
    重载规则(重写):

  • 参数列表必须彻底与被重写方法的相同;
  • 返回类型必须彻底与被重写方法的返回类型相同;
  • 访问权限不能比父类中被重写的方法的访问权限更低。例如:若是父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。将超类中的一个方法的可见性变高式容许的,减小式非法的。
  • 父类的成员方法只能被它的子类重写。
  • 声明为final的方法不能被重写。
  • 声明为static的方法不能被重写,可是可以被再次声明。
  • 子类和父类在同一个包中,那么子类能够重写父类全部方法,除了声明为private和final的方法。
  • 子类和父类不在同一个包中,那么子类只可以重写父类的声明为public和protected的非final方法。
  • 重写的方法可以抛出任何非强制异常,不管被重写的方法是否抛出异常。可是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更普遍的强制性异常,反之则能够。
  • 构造方法不能被重写。
  • 若是不能继承一个方法,则不能重写这个方法。(私有方法)

接口

  • 接口并非类,编写接口的方式和类很类似,可是它们属于不一样的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
  • 除了明确指定,全部的接口方法都是抽象的。接口没法被实例化,可是能够被实现。一个实现接口的类,必须实现接口内所描述
  • 的全部方法,不然就必须声明为抽象类。
  • 接口中的字段必须初始化,而且隐式地是公有的、静态的和final的。
  • 接口中的抽象方法没有主体。全部抽象方法都隐式的为公开的抽象的。

多态

同一个事件发生在不一样的对象上会产生不一样的结果。
多态的实现方式

  1. 重写
  2. 接口
  3. 抽象类和抽象方法

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

  • 问题1:方法重载与方法重写的对比
  • 方法的重写(Overriding)和重载(Overloading)是java多态性的不一样表现,重写是父类与子类之间多态性的一种表现,重载能够理解成多态的具体表现形式。
    (1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不一样或数量相同而类型和次序不一样,则称为方法的重载(Overloading)。
    (2)方法重写是在子类存在方法与父类的方法的名字相同,并且参数的个数与类型同样,返回值也同样的方法,就称为重写(Overriding)。
    (3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

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

  • 问题1:在书写方法时,在main中调用非静态字段
  • 问题1解决方案:将字段改成静态或者建立实例访问b。

[代码托管]

上周考试错题总结

1
编译错误:
public static void main(String[] args)类型的常见错误为:

  • 丢失static;

  • String必须大写;

  • public static void main()是错误的。

2
若是C:\workspace\Hello\src中有Main.java以下:

package cc.openhome;  public class Main { 

    public static void main(String[]args) {   

        System.out.println("Hello World");  

    } 

}

文本模式下你的工做路径是C:\workspace\Hello,那么如何编译与执行Main类别?
A .javac src\Main.java java C:\workspace\Hello\classes\Main
B .javac –d classes src\Main.java java –cp classes Main
C .javac –d classes src\Main.java java –cp classes cc.openhome.Main
D .javac –d classes src\Main.java java –cp classes/cc/openhome Main

javac的详细用法

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 150/200 2/2 20/20
第二周 200/400 1/3 20/40
  • 计划学习时间:15小时

  • 实际学习时间:20小时

参考资料

相关文章
相关标签/搜索