Java面向对象难点对比区别记忆

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41787780/article/details/80259032


    提到Java的面向对象就一定知道他的特性:封装、继承、多态(抽象)。

1.成员变量与局部变量的区别:

    成员变量:存放于对内存,定义在Java程序的类里边方法外边,有默认的初始值不能被static修饰,随着对象的创造而产生,消失而消失。

    局部变量:存放在栈内存中,定义在方法里边,没有默认的初始值,需要定义赋值,随着方法的调用而存在,方法的结束而消失。

2.static和final关键字:

    用static修饰成员变量或方法就可以把他们分别变成静态变量或静态方法;他们都是属于类的,可以直接用类名调用访问;他们是先于对象存在的,被所有对象共享;静态方法只能调用静态属性(变量或方法),要想调用非静态的可以先创建对象,通过对象来调用访问。

    final关键字修饰的类不能被继承,修饰的方法不能被重写,修饰的变量值不能改变(变量是基本数据类型的话是值不能改变,如果是引用数据类型的话空间地址不能改变,而里边的内容值是可以改变的)。

3.方法重载(overload)和方法重写(override)

    overload:在同一个类里面,可以有多个同名字的方法,但需要他们的参数列表里的参数不同(个数不同或者类型不同),与返回值无关,这就是方法重载。

    override:在继承里面,子类的方法和父类的方法一模一样(包括返回值类型,参数列表都要相同),这就是方法重写。

但父类的私有方法不能被重写(那叫定义),子类重写父类的方法不能权限更低,父类的静态方法也需要用静态方法重写(也可以不叫重写)。

4.单例设计模式:就是一个类只能创建一个对象;

    1)饿汉式:

        class Singleton{

                    private void Singleton(){}

                    private Singleton s = new Singleton();

                    public static Singleton getInstance(){

                            return s     }

        }

    2) 懒汉式:

        class Singleton{

                    private void Singleton(){}

                    private Singleton s = null;

                    public static Singleton getInstance(){

                                if(s == null){    s = new Singleton();    }

                                return s;

        }

5.抽象类和接口:

    抽象类:abstract 修饰符 返回值 类名{}      用abstract修饰的类;有构造方法,但是并不能用来调用创建对象,还有可以通过向上转型方式来创建对象(父类名 对象名 = new 子类名(););有抽象方法的类一定是抽象类,但抽象类并不一定有抽象方法,因为抽象类里边可以定义可实现的方法,同时也可以定义变量。抽象类不能用final修饰,因为final和abstract这两个修饰符不能同时修饰一个类或方法;抽象类的子类要么也是抽象类,否则子类一定要实现抽象类里的所有抽象方法。

    接口:interface 接口名;        没有构造方法,也不能创建对象也和抽象类一样的方式创建对象的;不是类但和类是平级的;一个类可以实现多个接口:class 类名 implements 接口1,接口2...{}   接口的子类要么抽象类要么实现接口的所有抽象方法;接口里的方法默认是 public和abstract修饰的,因此接口里的方法都是抽象方法;接口里没有变量,因为常量默认是public static final 修饰的;接口只能被接口继承可以多继承(一个接口继承多个接口中间用逗号隔开);JDK8以后接口里可以有实现的方法,但只限于用final或static修饰的方法;

    (红色字体的是不同点


展开阅读全文

没有更多推荐了,返回首页