第三篇学习总结

2020-01-22  本文已影响0人  拼搏男孩

第三篇学习总结

一、面向对象编程

1、定义

方法是对重复使用的代码的封装,类是对功能性质相近的方法的封装,所谓的对象则是类的实例化形式,是具有一定功能的独立个体,面向对象的思想相较于面向过程的思想更符合人类的思想习惯,将复杂的事情简单化。

2、特点

封装、继承与多态

3、类的使用

一个事物我们对于它往往从两个方面描述:属性与行为。对于一个类,Java中使用成员变量与成员方法进行描述。

4、对象

类可以理解为一张图纸,对象则是根据这张图纸设计出来的具体的实物。对象是类的实例化表现形式。

5、成员变量和局部变量

区别:

6、匿名对象

匿名对象是指只使用依次的对象,没有变量引用它。

7、private关键字

这是一个权限修饰符,可以用来修饰成员变量与成员方法,被其修饰的成员只能在本类中使用。

8、JavaBean

9、this关键字

this关键字代表本类对象,用来区分重名的成员变量和局部变量。只能在本类非静态方法中使用,因为静态方法独立于对象而存在,静态方法调用的时候对象不一定存在,所以就不能调用

二、封装

1、构造方法

构造方法的作用是当我们使用new关键字创建对象的时候可以传入一些参数,初始化对象中的成员变量。

注意事项:如果没有写构造方法,编译器会帮我们自动加上一个空参的构造方法,如果我们手动补上了一个有参的构造方法,编译器就不会帮我们加上了,这时如果我们还想要空参的构造方法就需要自己写了 。

2、构造方法的重载

构造方法本质上还是一种成员方法,所以说它的重载还是和方法重载一样,方法名相同,参数列表不同。构造方法之间可以相互调用,需要使用this(),没有参数的表示调用空参构造方法,传入某个参数代表调用特定的构造方法。需要注意的是,一个构造方法中只能调用一个构造方法,并且调用语句必须位于第一行。否则编译器会报错。

3、代码块

代码块就是用花括号将一段代码括起来形成一个整体。

对象初始化顺序问题:构造方法晚于成员变量直接初始化和构造代码块,成员变量直接初始化和构造代码块是平级的,两者谁在前面先执行谁,正常开发过程中一般将成员变量写在前面。

4、静态

按照我的理解,一旦一个类的成员变量与成员方法加上了static关键字,这个成员变量或者成员方法就不属于依据这个类创建的对象了,而属于这个类

注:其实也可以通过对象名的形式调用静态变量与静态方法,但是不建议这样做,这样做之后让人一位这个变量是属于这个对象的,事实上静态变量与静态方法不属于任何对象,而属于创建对象的类。

由以上可知,应该将频繁使用的定义为静态的,还应该将所有对象共享的定义为静态的,但是静态方法区内存是有限的,不能定义太多静态,由此就有了单例模式。

5、静态与非静态的关系

记住静态存在的时候非静态不一定存在,但是非静态存在的时候静态一定存在,所以有以下三点区别:

6、main方法简介

main方法是程序的入口,首先被JVM压栈,所以必须定义为公共的、静态的,同时它也没有返回值,main方法中的参数是我们使用java命令行编译文件时输入的字符串。

三、单例模式

1、 定义

单例模式指的是一个类在内存中只保持一个对象,因为频繁的创建和销毁对象会消耗系统资源,使用单例模式有助于提高性能。但是通过单例模式创建的对象不会被系统回收,创建过多的单例容易造成内存溢出。

2、创建过程

3、分类

public class Singleton{
    private static Singleton s = new Singleton();
    private Singleton(){

    }
    public static Singleton getInstance(){
        return s;
    }
}
public class Singleton{
    private static Singleton s;
    private Singleton(){

    }
    public static Singleton getInstance(){
        if(s==null){
            s = new Singleton();
        }
        return s;
    }
}

四、继承

在生活中,继承就是子从父那里接受财产,在Java中,继承是指子类从父类那里拿一些方法和变量,这样有利于提高代码的复用性。在Java中使用extends关键字来实现继承,Java只允许单继承,不允许多继承,这点和C++是不一样的。

1、优缺点

2、this和super关键字

this代表本类对象,super代表父类对象;this.成员 调用本对象中的成员,也可以调用父类中的成员(当子类中没有的时候),super.成员 调用父类的成员,这时符合就近原则的;this(...) 调用本对象的构造方法 super(...) 调用父对象的构造方法;在子类的一个构造方法中this()与super()不能同时出现,因为这两者都必须是子类构造方法中的第一条语句,同时使用会造成冲突。

3、子父类构造方法

子类中的所有构造方法都会默认访问父类中的无参构造方法。因为子类继承父类中的数据,可能还会使用父类中的数据,所以子类在初始化的时候要先将父类从初始化。当父类中没有空参构造的时候,子类会报错,这时我们可以采用调用父类的有参构造方法。

4、子父类成员的关系

子类无法使用父类的私有成员(成员变量和成员方法);子父类中出现了一样的成员变量,还是采用就近原则,如果子类有,就用子类的,如果子类没有,就用父类的。这不适用于使用super关键字调用父类成员的时候,这种情况是显式调用父类的,即使子类有也不会调用子类的。

5、子父类的初始化顺序

加载父类->加载子类->父类类初始化->子类类初始化->创建父类对象->创建子类对象->初始化父类->初始化子类

在这个过程中坚持的原则是:静态优先,父类优先。

6、方法重写

方法重写指的是子类重写父类的非私有方法,这样在多态的时候就可以调用子类自己的具有相同名称和参数列表的方法。

7、instanceof关键字

这个关键字的作用是用来判断一个对象是否是一个类及其子类的实例。当时学关系运算符的时候提到过这也是一个关系运算符,返回的是一个boolean类型的true和false。

上一篇 下一篇

猜你喜欢

热点阅读