美文网首页
从0开始复习java(2)

从0开始复习java(2)

作者: ifeelok0319 | 来源:发表于2017-04-25 10:31 被阅读11次

    面向对象

    1、方法的参数传递机制

    java里方法的参数传递方式只有一种:值传递。

    2、方法的所属性

    • 方法不能独立定义,只能在类体里面定义。

    • 方法要么属于类,要么属于实例

    • 方法不能独立执行,必须使用类或者实例进行调用。

    3、方法重载

    与参数列表相关,而与修饰符无关

    大部分时候不建议重载形参个数可变的方法

    4、成员变量和局部变量

    成员变量:实例变量,类变量

    局部变量:形参,方法局部变量,代码块局部变量

    成员变量在创建类或者实例时初始化,而局部变量必须显式初始化。

    5、封装

    将对象状态信息保存在对象内部,不允许直接修改,而是通过类提供的方法进行操作。

    访问控制符不能修饰局部变量。

    类修饰符,default和public

    有以下原则:

    1. 绝大部分成员变量应该使用private修饰
    2. 某个类主要用于父类,则其大部分方法应该使用protected
    3. 希望给其他类使用的方法使用public

    6、java的常用包

    1. java.lang

    java语言的核心类,无需导入。

    1. java.util

    大量工具类/接口和集合框架类/接口

    1. java.net

    网络编程

    1. java.io

    输入输出

    1. java.txt

    格式化相关

    1. java.sql

    jdbc数据库编程

    1. java.awt

    抽象窗口工具集,构建图形用户界面程序

    1. java.swing

    图形用户界面编程,构建平台无关的GUI程序

    7、继承

    重写父类方法:

    方法名相同, 参数列表相同

    子类方法返回值类型更小或者相等,抛出的异常类更小或者相等

    方法的访问权限更大或者相等

    this和super不能出现在static修饰的成语函数中。

    this和super调用构造器都要在第一行,不能同时出现。

    不管是否使用super调用执行父类构造器的初始化代码,子类构造器总会调用父类构造器一次。

    • 子类用super显示调用。

    • 子类用this调用本类构造器。

    • 调用父类无参构造器

    8、多态

    相同类型的变量、调用同一个方法时呈现出多种不同的行为特征。

    编译时类型和运行时类型不一致。

    强制类型转化:这个对象实际上是一个子类实例,才能从父类对象强制转换为子类对象。

    baseClass bc = new subClass()

    子类对象赋给父类应用变量时,称为向上转型。编译时是父类,执行时是子类。

    instanceof运算符和+等运算符用法一样。可以保证不会产生ClassCastException

    if (obj instance of String){
        String s = (String)obj
    }
    

    9、初始化块

    与构造器类似,可以执行对象的初始化操作。

    相同类型的初始化块之间有顺序。

    [修饰符] {
        /*
        *代码
        */
    }
    

    修饰符只能是static

    初始化块只在创建java对象时隐式执行,在执行构造器之前执行。

    普通初始化块、声明实例变量指定的默认值都可认为是对象的初始化代码,他们的执行顺序与源程序中的排列顺序相同。

    初始化顺序:

    class Root{
        static {
            System.out.println("1");
        }
        {
            System.out.println("2");
        }
        public Root(){
            System.out.println("3");
        }
    }
    class Mid extends Root{
        static {
            System.out.println("4");
        }
        {
            System.out.println("5");
        }
        public Mid(String msg){
            this();
            System.out.println("6");
        }
        public Mid(){
            System.out.println("7");
        }
    }
    class Leaf extends Mid{
        static {
            System.out.println("8");
        }
        {
            System.out.println("9");
        }
        public Leaf(String msg){
            super("hello");
            System.out.println("10");
        }
        public Leaf(){
            System.out.println("11");
        }
    }
    public class Test{
        public static void main(String[] args){
            Leaf leaf = new Leaf("Java");
        }
    }
    

    结果:

    1
    4
    8
    2
    3
    5
    7
    6
    9
    10

    相关文章

      网友评论

          本文标题:从0开始复习java(2)

          本文链接:https://www.haomeiwen.com/subject/eazmzttx.html