zoukankan      html  css  js  c++  java
  • java基础知识总结(二)

    Java中的代码块

      java中的代码块是用{}括起来的代码,进行一些功能的限定

    • 静态代码块:在类第一次被初始化的是后执行,负责一些类的初始化操作,仅仅只执行一次
    • 构造代码块:顾名思义,辅助构造器进行初始化操作,每次构造器执行前先执行构造代码块
    • 局部代码块:在方法内部的代码块,主要用来限制变量的生命周期
    • 同步代码块:局部代码块的一种,在方法内部进行同步控制

    和类初始化相关的构造方法执行顺序:静态代码块 > 构造代码块 > 构造方法

    public class FanXing {
        //静态代码块
        static {
            System.out.println("静态代码块一执行了!");
        }
        static {
            System.out.println("静态代码块二执行了!");
        }
        //构造方法
        public FanXing() {
            System.out.println("构造方法执行了!");
        }
        //构造代码块
        {
            System.out.println("构造代码块一执行了!");
        }
        {
            System.out.println("构造代码块二执行了!");    
        }
        public static void main(String[] args) {
            FanXing f = new FanXing();
            //局部代码块    
            {
                System.out.println("局部代码块执行了");
            }
        }
    }

    执行结果为:

    静态代码块一执行了!
    静态代码块二执行了!
    构造代码块一执行了!
    构造代码块二执行了!
    构造方法执行了!
    局部代码块执行了

    继承

      我们一定要知道一般情况下继承是为了方法的重写,而不是为了功能的扩展,功能的扩展用接口实现,java中只有单继承和多重继承,没有多继承(接口有多继承,这也在一定程度上弥补了接口单一原则的弊端,继承提高了代码的复用性和维护性,让类与类产生了一个关系,是多态的前提。

      但是任何事物都有两面性,继承也有不好的一面的,我们写程序都追求低耦合好内聚,意思就是尽量让一个类独立完成自己的功能,不和其他类产生联系,这样不利用代码的扩展。甚至继承在一定程度上打破了封装性。

    继承的注意事项:

    • 子类不能继承父类的私有成员,不能继承并不是没有该属性,只是不能直接调用,而我们通常的做法是,父类提供getXxx()和setXxx()方法或者子类通过super去调用父类的构造方法进行该私有成员的初始化。
    • 子类不能继承父类的构造方法,但是可以通过super去访问

    多态

      同一个对象在不同时刻体现出来的不同状态。多态是在写代码时期由于无法确定该引用类型,用一种对象引用来表现多种对象,我们常见的传参是抽象类或者接口类型的其实都是多态,多态的前提:有继承或者实现关系,有方法重写,有向上转型。在多态中主要的是方法的重写,因为只有不同的“态”具有不同的方法内容,多态才有实际的意义。

      同样的多态也有弊端,对于向上转型,该对象不能调用子类特有的方法,调用前需要将此对象强转子类对象,也就是向下转型。

    多态中的成员访问特点

    • 成员变量:编译看左边,运行看左边
    • 构造方法:子类的构造都会默认访问父类构造
    • 成员方法:编译看左边,运行看右边
    • 静态方法:编译看左边,运行看左边

    多态中,例如:Person  s =  new Stiudent()无论什么属性在编译时都是先检验Person类中是否存在,而在运行时只有成员方法会调用Student类中的方法,其他的都是调用Person中的,所以说多态是基于方法重写的!

    抽象类

      我们在继承的时候就知道了,有些方法在父类和子类中会有不同的实现,那么如果这个方法在父类中并不会有具体的实现,就仿佛多态在真正初始化之前是不知道什么类型的,所以这个方法在不被真正重写之前是不知道具体内容的,那么这个方法我们就可以用abstract修饰,来声明该方法此时没有具体的实现内容,需要子类不得不重写,这就是抽象方法,而一个类有了抽象方法,这个类就必须用abstract修饰来标注它是一个抽象类,

      abstract:作为一个修饰符,是抽象的标识,那么抽象往往 意味着和很多关键字冲突,比如说private static final,仔细想想那几个关键字的含义你便明白为什么了,其实abstract只能和俩个修饰符共存:protected和public,因为java中是这样说的:The abstract method fun in type FanXing can only set a visibility modifier, one of public or protected.

    抽象类的特点

    • 抽象类和抽象方法必须用关键字abstract修饰
    • 抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
    • 抽象类不能实例化,即不能创建对象

    接口

      如果我们说抽象类是共性的提取,那么接口就是特性的扩展,接口是用来给类扩展功能的,实现一个接口就 意味着扩展该接口中的方法

    接口的特点

    • 接口用关键字interface修饰
    • 接口中的方法一定是抽象方法,也就是用public abstract修饰
    • 接口中的成员变量一定是静态的常量,也就是用public static final修饰
    •  接口不能实例,接口中没有构造方法,这里区别于抽象类中,因为抽象类是类,其子类对象是需要调用父类的构造器
    • 接口和接口之间可以多继承,即一个接口同时继承多个接口。



  • 相关阅读:
    9、UmbracoNewsSite:分页
    7、UmbracoNewsSite:新闻详情页
    6、UmbracoNewsSite:添加新闻分类
    5、UmbracoNewsSite:添加css和js文件
    3、UmbracoNewsSite:文档类型设置
    书单
    文章
    Django-rest framework框架
    Django框架
    前端快速入门
  • 原文地址:https://www.cnblogs.com/gollong/p/9390326.html
Copyright © 2011-2022 走看看